Gibt es eine Entsprechung zur MySQL- SHOW DATABASES
Anweisung?
Ist es möglich, Datenbanken in einem Cluster zu finden? dh Datenbanken im Netzwerk auf einem anderen System vorhanden?
Kann ich die in einer Oracle-Installation vorhandenen Dateien analysieren, um sie zu finden?
Wie würden Sie bei vollständigen Zugriffsberechtigungen für ein Oracle-System vorgehen, um alle vorhandenen Datenbanken aufzulisten?
Antworten:
Es gibt keine solche Sache. Sie können Listener auf einem Computer (
lsnrctl status
) abfragen, um zu sehen, welche Dienste dort registriert sind, aber das ordnet Datenbank nicht eins zu eins zu (und es könnten mehrere Listener auf demselben Computer sein). Andernfalls stellen die häufig verwendeten Tools eine Verbindung zu einer Datenbankinstanz her, und eine Instanz gehört zu einer einzelnen Datenbank.Wenn es sich um Oracle RAC-Cluster handelt, kennt jede Instanz ihre Peers (andere Instanzen, die dieselbe Datenbank bedienen), und Sie können die anderen Instanzen, die derzeit für diese Datenbank gestartet sind, in der
gv$instance
Ansicht suchen .Sie können das
crsctl
Dienstprogramm auch verwenden , um die im Cluster registrierten Dienste (einschließlich Datenbanken) und deren Status aufzulisten.Wenn Sie über die Cluster-Software eines anderen Anbieters sprechen, bin ich mir ziemlich sicher, dass alle diese Arten von Dienstprogrammen zur Ressourcenverwaltung abzufragen sind.
Wenn es sich nur um eine Reihe von Computern handelt, gibt es keine hundertprozentig zuverlässige Methode, um alle Datenbanken in einem Netzwerk aufzulisten.
Um aktive (dh gestartete) Datenbanken zu finden, suchen Sie
*_pmon_*
unter Unix nach Prozessen (es gibt einen pro Datenbankinstanz) und unter Windows nach Oracle-Diensten.Informationen zum Auffinden von Installationen der Oracle-Datenbanksoftware finden Sie
/etc/oratab
unter Unix. Dies sollte alleORACLE_HOME
installierten s enthalten . Sie können in jeder innerhalb derer suchen$ORACLE_HOME/dbs
fürspfile<SID>.ora
und / oderinit<SID>.ora
Dateien - jeweils eine für jede Datenbank sein wird.(Ich glaube, Sie können das Äquivalent der Informationen in
oratab
den folgenden Windows-Registrierungsschlüsseln findenHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, aber ich kenne die Struktur nicht.)Wenn Sie jetzt natürlich Ihre gesamte Datenbank bei einem OEM-Server (Enterprise Manager) registriert haben, als Sie diese installiert haben, finden Sie dort die vollständige Liste - aber ich denke, wenn Sie fragen, ob dies nicht der Fall ist.
quelle
Oracle hat keine Datenbanken, sondern Schemata, mit denen Sie sie auflisten können
oder so ähnlich :
quelle
Einfach ausgedrückt gibt es keine direkte Analogie für MySQL-Datenbanken oder einen Cluster unter Oracle: Die engste Übereinstimmung ist ein Schema, aber das ist immer noch sehr unterschiedlich.
Dies wird sich anscheinend in 12c mit der Einführung von steckbaren Datenbanken ändern :
quelle
Ich denke, eine Antwort für zukünftige Browser auf * nix könnte sein:
Katze / etc / oratab
quelle
Stellen Sie einfach eine Verbindung zu ASM her und überprüfen Sie den Datenbank-Client.
quelle
Wenn Sie unter Oracle 12 über Pluggable Databases (empfohlen) verfügen, haben Sie folgende Möglichkeiten:
quelle
Für Standalone-Datenbanken, um die Liste der Datenbanken abzurufen, die nach dem Neustart des Hosts automatisch gestartet werden:
oder um eine Liste aller Datenbanken zu erhalten:
Für RAC-Datenbanken kann folgende Methode hilfreich sein:
Wie bereits erwähnt, ist die Datenbank in MySQL nicht mit der Datenbank in Oracle identisch. In Oracle ist es dem Schema näher - das heißt dem Container für Benutzerobjekte. Um eine Schemaliste zu erhalten, können Sie folgende SQL-Anweisung verwenden:
oder um nicht systembezogene Schemata aufzulisten (verfügbar in Oracle RDBMS ab Version 12c):
quelle