Oracle 18c Express Edition – eine zweite Datenbank anlegen

23. November 2018 Aus Von Markus Flechtner

Nicht alles, was technisch möglich ist, ist auch erlaubt. Und so gilt natürlich für die Oracle Datenbank 18c Express Edition ganz klar die Einschränkung. „One instance per environment“, wobei Environment eine VM, eine physikalischer Server etc. sein. Aber vielleicht kann man ja doch zwei XE-Datenbanken auf einem Server betreiben. Probieren wir das doch mal aus.

English translation of this post on www.markusdba.net

Und die kurze Antwort ist: es geht. Aber es können nicht beide XE-Datenbanken gleichzeitig geöffnet sein. Und damit wäre den Lizenzbedingungen meiner Ansicht genüge getan.

Eine neue Datenbank wird bei Oracle-18c-XE mit dem dbca angelegt. Im Gegensatz zur 11.2-Express Edition, bei der man eine neue Datenbank mit einem Skript anlegt (siehe hier) , gibt es in 18c-XE den aus der SE2 und EE bekannten dbca:

Und dieser ermöglicht es natürlich, eine weitere Datenbank zu konfigurieren. D.h. man kann die SID angeben , Pfade definieren etc.).
SID und Datenbankname sind dabei frei wählbar; „XE“ ist nicht fest vorgegeben.
Erst wenn man die Datenbank anlegen will und dbca probiert, die zweite XE-Instanz auf dem gleichen Server zu starten, dann kommt eine Fehlermeldung:

Die naheliegende Lösung ist es, die vorhandene XE-Instanz zu beenden.
Anschließend kann man dann die zweite Datenbank anzulegen.

Die gleiche Fehlermeldung gibt es natürlich auch auf der Kommandozeile im SQL*Plus, wenn man die zweite XE-Datenbank starten möchte, wenn aber eine andere XE-Instanz schon läuft:

oracle@abel:~/ [XENCDB] ps -ef |grep smon
oracle    3168     1  0 17:45 ?        00:00:00 xe_smon_XE
oracle    8967  4429  0 18:39 pts/0    00:00:00 grep --color=auto smon


oracle@abel:~/ [XENCDB]  echo $ORACLE_SID
XENCDB
oracle@abel:~/ [XENCDB]  sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Thu Nov 22 14:55:09 2018
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-00442: Oracle Database Express Edition (XE) single instance violation error
SQL> exit
Disconnected


oracle@abel:~/ [XENCDB]   oerr ora 442
00442, 0000,"Oracle Database Express Edition (XE) single instance violation error"
// *Cause:  An attempt was made to start more than one Oracle Database Express
//          Edition (XE) instance.
// *Action: Upgrade to Oracle Database Standard Edition (SE) or Oracle Database
//          Enterprise Edition (EE) if you want to run more than one instance.

Man kann die beiden Datenbanken somit nur abwechselnd betreiben.

Einen Haken gibt es allerdings: Die „zweite“ XE-Datenbank wird allerdings nicht „sauber“ heruntergefahren wenn der Server heruntergefahren wird und sie wird auch nicht automatisch gestartet wenn der Server gebootet wird. Das Skript /etc/init.d/oracle-xe, mit dem die Oracle-Komponenten (Instanz + Listener) gestartet werden, enthält fest verdrahtet die Oracle-SID „XE“. Nach dem Reboot ist dann immer die XE-Instanz oben. Das Skript kann man natürlich ändern und eine andere SID eintragen. Aber dann gilt das Gleiche für die XE-Instanz. Insgesamt ist dieses Verhalten aber OK, denn die Oracle 18c Express Edition und somit auch das Skript sind nur für eine Datenbank pro Umgebung vorgesehen.

Links:

Werbung (Amazon-Partner-Link)