2008-11-20 4 views
8

Ich frage mich, ob es eine Möglichkeit gibt, festzustellen, ob eine Instanz von Oracle auf einem System eine Datenbank installiert hat oder nicht?Erkennen, ob eine Oracle-Datenbank installiert ist

Dies ist für ein Installationsskript, und ich muss überprüfen, dass eine tatsächliche Datenbank vorhanden ist, bevor Sie mit dem Laden meines eigenen Tablespace in diese Datenbank fortfahren. Hat jemand dieses Problem schon einmal angepackt?

Prost

Antwort

5

Überprüfen Sie, ob ORACLE_HOME vorhanden ist. Es ist auch vernünftig zu erwarten, dass diese Umgebung für die Installation konfiguriert werden sollte. Daher ist es ein guter erster Start, die Umgebungsvariablen zu testen und mit einer sinnvollen Diagnose zu beenden. Wenn Sie ORACLE_HOME, ORACLE_SID oder eine andere geeignete Umgebungsvariable eingerichtet haben, können Sie nach dem Vorhandensein eines Oracle Home suchen und auf Datenbankkonnektivität und Berechtigungen testen.

+0

Ich habe gerade überprüft, ich habe kein ORACLE_HOME oder und ORACLE_SID und ich kann ohne Probleme zu Oracle-Datenbanken verbinden. – ninesided

+0

Wenn Sie Instant-Client haben, dann brauchen Sie kein Orakel-Home ... die Verbindungszeichenfolge kann direkt in die App eingebaut werden und benötigt kein Oracle Home oder tsnames.ora – jle

+0

Ich denke, das OP sprach über einen Server - Sie kann einen sofortigen Client auf einem PC haben, aber ein Server hat immer noch ein Oracle-Home für die Datenbankinstanz. – ConcernedOfTunbridgeWells

4

Sie tnsping, ob die Datenbank Zuhörer, ein guter Hinweis darauf, dass Aktivierungs- ist zu prüfen, verwenden könnte. Warum nicht einfach eine Testverbindung herstellen? Wenn es Teil eines Installationsprozesses ist, können Sie den Benutzer auffordern, die entsprechenden Verbindungsanmeldeinformationen einzugeben, wenn Sie nicht wissen, was im Voraus geschehen soll.

5

Für Oracle 10g unter Windows:

  • Überprüfen Sie die Registrierung:
    • Der Schlüssel HKLM\SOFTWARE\ORACLE vorhanden sein muss.
    • Ein Unterschlüssel muss, dass vorhanden sind:
      • hat einen Namen mit KEY_ (wie KEY_OraDb10g_home1, das Bandende eine Oracle-Name ist) zu starten.
      • Hat einen Wert, dessen Name mit ORA_ beginnt und mit _AUTOSTART endet. (wie ORA_XE_AUTOSTART, die mittlere Zeichenfolge ist ein Instanzname).

Vorsicht, ein Oracle-Client installieren (ohne Datenbankinstanz dann), erstellte Einträge in der Registrierung und Umgebungsvariablen kann (wie ORACLE_HOME). Aus diesem Grund ist das obige Muster ein wenig kompliziert.

Dieses Muster wird sehr wahrscheinlich auch für Oracle 9i und möglicherweise Oracle 8i funktionieren.

+0

+1 für die Roadmap. Win32 Oracle-Client-Software generiert eine enorme Menge von Müll in der Registrierung bei der Installation. – ConcernedOfTunbridgeWells

+0

@Mac Ich habe versucht, die Registrierung mit folgender Anweisung (C#) zu überprüfen: ** var swSubkeys = (Registry.LocalMachine.OpenSubKey ("Software")). GetSubKeyNames(); ** aber es gibt keinen ORACLE-Eintrag in swSubKeys (ein String-Array). Also überprüfe ich manuell mit Regedit, offensichtlich ist der ORACLE-Unterschlüssel in HKLM \ SOFTWARE vorhanden ... Es ist sehr verwirrend. – MagB

0

Suchen Sie nach der Datei/etc/oratab für Orakelhäuser. In diesen Heimen ist sowohl die Datenbanksoftware als auch der Datenbankname installiert. Anschließend können Sie überprüfen, ob die Datenbank fehlerfrei ist oder nicht.

0

Ich bin nicht sicher über Oracle, aber für MySQL und PostgreSQL ich folgendes tun:

$yum grouplist | grep SQL 

Das gibt:

MySQL Database client 
MySQL Database server 
PostgreSQL Database client 
PostgreSQL Database server 

Also gehe ich davon aus, sollten Sie versuchen:

$yum grouplist | grep Orac