# Mehrere Datenbanken in Oracle



## oraclin25 (27. April 2012)

Hallo zusammen,

ich habe mittleweiler das Konzept von Datenbank und Instanz verstanden.  Ich habe Oracle Express Edition installiert, konnte dadrinne keine DBCA (Database Configuration Assistant) vorfinden.  Liegt es vielleicht daran, dass Express Edition lediglich eine DB und eine Instanz anbietet?

Angenommen, ich besäße eine ganz normale Version sagen wir mal 11g.  Wäre es denn hier möglich, mehrere Datenbanken zu erstellen, natürlich mit ihrer jeweiligen Insanz****

Beispielszenario:
DB1 -> SYS, SYSTEM, HR.  All dies werden von INSTANCE1 verwaltet.

DB2 -> SYS,SYSTEM,HR.  All dies werden von INSTANCE2 verwaltet.

Danke Euch.

Schöne Grüße aus Rheinland,
Eure Ratna


----------



## Michael Melchers (27. April 2012)

Hallo Ratna,

also die Oracle Express Edition gibt Dir wirklich nur die Möglichkeit, eine Datenbank aufzusetzen. Von daher wird der DBCA nicht mitgeliefert.

Du kannst aber ohne Probleme für Entwicklungs- und/oder Testzwecke und für das Selbststudium eine Oracle 11gR2 Enterprise Edition herunterladen und installieren. Diese Version liefert alle Tools und Features mit, die Du benötigst. Dort gibt es dann auch den DBCA.

Mit so einer Version (Enterprise Edition, Standard Edition geht auch) kannst Du dann mit einer RDBMS-Installation auch mehrere Datenbanken aufsetzen.

Wie weit fortgeschritten sind denn deine Oracle-Kenntnisse? Um z. B. auf einem Server mit mehreren Datenbanken zwischen den verschiedenen Umgebungen wechseln zu können, gibt es ein Skript namens "oraenv". Mit Aufruf dieses Skripts kannst du dann die ORACLE_SID angeben (sprich die Oracle-DB letzten Endes) mit der du nun arbeiten und dich z. B. mit SQL*Plus connecten möchtest.

By the way: installierst du die Oracle-DB auf Windows oder Linux?

Gruß,
Michael


----------



## oraclin25 (28. April 2012)

Hallo Michael,

danke für die Eklärung.  Bzgl. mehrerer Datebanken auf einem Server, meinst du das Setzen von Umgebungsvariablen für die einzelnen Datenbanken?

Soweit ich weiss, ORACLE_BASE ist immer der gleich Pfad.  Nur der ORACLE_HOME wäre unterschiedlich für die einzelnen Datenbanken, richtig?

Danke.

Schöne Grüße aus Rheinland,

Eure Ratna


----------



## Michael Melchers (29. April 2012)

Hallo Ratna,

wenn Du mehrere Datenbanken auf einem Server betreibst, setzt Du als Umgebungsvariablen am besten ORACLE_BASE und ORACLE_HOME. Das ORACLE_HOME bleibt auch bei mehreren Datenbanken gleich, da hier die Software-Dateien des RDBMS liegen.

In diesem HOME-Verzeichnis findest du dann auch das bin-Verzeichnis, in dem Tools wie z. B. dbca liegen. 

Bevor eine Oracle-DB installiert wird, sollte man sich erstmal Gedanken über die Verzeichnissstruktur machen. In der Praxis hat sich häufig folgender Aufbau bewährt (kann aber nach eigenem Gusto auch abgewandelt werden):

ORACLE_BASE=/oracle/orabase
ORACLE_HOME=/oracle/orabase/11.2.0.3/

Wenn jetzt 2 Datenbanken auf einem Server erstellt werden sollen, können entsprechend passsende Unterverzeichnisse im ORACLE_BASE erstellt werden und die Datenbank-Dateien werden dort abgelegt. Also z. B.:

/oracle/orabase/oradata/proddb und
/oracle/orabase/oradata/testdb

Damit gibt es schonmal eine klare Trennung zwischen den beiden Datenbanken.

Während der Installation des Datenbanksystems (nicht der Datenbank selber!) werden in ORACLE_BASE dann noch Unterverzeichnisse wie /diag, /flash_recovery_area, /admin angelegt. Das muss man nicht "händisch" erledigen.

Also, ORACLE_BASE und ORACLE_HOME sind gleich. Bei mehreren Datenbanken liegen die Dateien am besten in separaten Verzeichnissen im ORACLE_BASE. Man kann aber auch komplett andere Speicherorte ausserhalb des ORACLE_BASE verwenden. Diese Pfadangaben werden bei Erstellen der Datenbank mit Hilfe von DBCA abgefragt.

Auch das Skript "oraenv" wird mit "installiert". Wenn mehrere Datenbanken unter demselben User installiert werden, dann kann mit diesem Skript jedesmal die ORACLE_SID abgefragt werden und man loggt sich dann mit sqlplus / as sysdba auf die entsprechende DB (proddb oder testdb) gem. der gesetzten ORACLE_SID ein.

Ist Anfangs etwas kompliziert und verwirrend. Wenn man aber einmal sauber so eine Installation durchgeführt hat, wird die gesamte Oracle-Terminologie schon viel klarer.

Wenn noch fragen da sind, einfach posten!

Viele Grüße,
Michael

PS: oraenv gibt es nicht unter Windows... Da ich selbst keine Oracle-DBen unter Windows installiere sondern nur unter Linux, müsste ich selbst erstmal schauen, wie man dort zwischen den ORACLE_SIDs wechselt. Bin nicht so in der Windows-Server-Welt zuhause.... ;-)


----------



## oraclin25 (29. April 2012)

Hallo Michael,

vielen Dank erstmal für die ausführliche Erklärung, werde sie im Laufe des morgigen Tages langsam "verinnerlichen".  

Ich verwende Windows Vista und habe Oracle Database Express Edition installiert.
Wenn ich im MS-DOS folgendes tippe:
set ORACLE_HOME 

dann steht: die Umgebungsvariable "ORACLE_HOME" is nicht definiert.  Dabei funktioniert mein Oracle.  Und ich habe in meiner Registrierung reingesehen, da stehen:
für ORACLE_BASE ->    C:\oraclexe\
für ORACLE_HOME ->   C:\oraclexe\app\oracle\product\10.2.0\server

Komisch.. Wie prüfe ich eigentlich im MS-DOS, ob die Umgebungsvariablen gesetzt sind?

Danke Dir/Euch.

Schöne Grüße aus Rheinland,
Eure Ratna


----------



## sheel (29. April 2012)

Du hast es ja schon geschrieben: "set" zeigt dir alle Variablen mit Inhalt an
Nur, MSDOS ist was Anderes.


----------



## oraclin25 (30. April 2012)

ich dachte nämlich, wenn man folgendes ausführt:
set ORACLE_HOME

, dann muss ja der Pfad angezeigt werden.

Bei mir kommt aber "Die Umgebungsvariable "ORACLE_HOME" ist nicht definiert"

Ich gehe doch davon aus, dass dabei ORACLE_HOME richtig gesetzt ist, sonst würde mein Oracle ja nicht funktionieren.

Es geht darum, dass ich die bereits gesetzte Umgebungsvariable ORACLE_HOME samt des Pfades in der Eingabeaufforderung gezeigt wird.  Wie mache ich das.

Vielen Dank.

Schöne Grüße aus Rheinland,
Eure Ratna


----------



## Michael Melchers (30. April 2012)

Hallo Ratna,

gib mal bitte in der Eingabeaufforderung (das, was du mit "MS-DOS" meinst) folgenden Befehl ein:

set ORACLE_HOME=C:\oraclexe\app\oracle\product\10.2.0\server

Damit hast du dann auch die Umgebungsvariable gesetzt. Das kannst du wie folgt auch prüfen:

echo %ORACLE_HOME%


Soweit ich weiß, haben unter Windows die Umgebungsvariablen nicht zwangsläufig etwas mit den Einträgen in der Registry gemeinsam. Soll heißen, nur weil es einen Registry-Eintrag gibt, muss nicht gleich auch automatisch eine Umgebungsvariable gesetzt sein.

Gruß,
Michael


----------

