Überprüfen der Oracle-Sid und des Datenbanknamens

115

Ich möchte die SID und den aktuellen Datenbanknamen überprüfen.

Ich verwende die folgende Abfrage zum Überprüfen der Oracle-SID

select instance from v$thread;

aber Tabelle oder Ansicht existiert nicht Fehler kommt.

Ich verwende die folgende Abfrage zum Überprüfen des aktuellen Datenbanknamens

select name from v$database;

aber Tabelle oder Ansicht existiert nicht Fehler kommt.

Irgendeine Idee für die oben genannten zwei Probleme?

Adnan
quelle

Antworten:

148

Ich nehme an, SELECT user FROM dual;sollte Ihnen den aktuellen Benutzer geben

und SELECT sys_context('userenv','instance_name') FROM dual;den Namen der Instanz

Ich glaube, Sie können SID als bekommen SELECT sys_context('USERENV', 'SID') FROM DUAL;

V4Vendetta
quelle
1
Vielen Dank für die schnelle Antwort. Sind Instanz und Oracle SID dasselbe?
Adnan
2
@Adnan Sie müssen nicht gleich sein, da möglicherweise mehrere Instanzen der Datenbank auf einem einzelnen Computer ausgeführt werden. Sie werden durch SID
V4Vendetta am
@adnan Hast du die Werte bekommen, die du brauchst?
V4Vendetta
8
select sys_context('userenv','db_name') from dual;für Datenbankname und Sid habe ich bereits in der Antwort hinzugefügt.
Ich
2
Bitte überprüfen Sie diesen Link
V4Vendetta
57

Wenn Ihr Ziel wie ich darin besteht, den Datenbankhost und die SID dazu zu bringen, eine Oracle JDBC-URL zu generieren, z

jdbc:oracle:thin:@<server_host>:1521:<instance_name>

Die folgenden Befehle helfen:

Oracle-Abfragebefehl zum Überprüfen der SID (oder des Instanznamens):

select sys_context('userenv','instance_name') from dual; 

Oracle-Abfragebefehl zum Überprüfen des Datenbanknamens (oder des Serverhosts):

select sys_context('userenv', 'server_host') from dual;

Att. Sergio Marcelo

Sergio MC Figueiredo
quelle
Perfekt. Genau das wollte ich wissen, wusste aber nicht, wie ich es ausdrücken sollte.
Addison
Ich auch. Danke Sergio!
Horseatingweeds
48

Der Vollständigkeit halber können Sie auch ORA_DATABASE_NAME verwenden.

Es ist möglicherweise erwähnenswert, dass nicht alle Methoden dieselbe Ausgabe liefern:

SQL> select sys_context('userenv','db_name') from dual;

SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orcl

SQL> select ora_database_name from dual;

ORA_DATABASE_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.XYZ.COM
Patrick Marchand
quelle
Für die obigen Abfragen sind keine besonderen Berechtigungen erforderlich. Wird überprüft, indem nur ein neuer Benutzer mit der Berechtigung CONNECT erstellt wird.
Bdeem
22

Die V $ -Ansichten sind hauptsächlich dynamische Ansichten von Systemmetriken. Sie werden zur Leistungsoptimierung, Sitzungsüberwachung usw. verwendet. Der Zugriff ist daher standardmäßig auf DBA-Benutzer beschränkt, weshalb Sie diese erhalten ORA-00942.

Der einfachste Weg, den Datenbanknamen zu finden, ist:

select * from global_name;

Diese Ansicht wird PUBLIC gewährt, sodass jeder sie abfragen kann.

APC
quelle
Was ist mit Orakel SID? Gibt es eine Methode, um es von einem Scott-Konto aus zu überprüfen?
Adnan
1
Das ist der Dienstname, nicht die SID.
jpmc26
5

Geben Sie an der sqlplusEingabeaufforderung ein

SQL> select * from global_name;

Dann wird das Ergebnis an der Eingabeaufforderung angezeigt

SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

Hier ist zuerst ein "ORCL" der Datenbankname, möglicherweise Ihr System "XE" und andere, die zum Zeitpunkt des Herunterladens von Oracle angegeben wurden.

anant kumar
quelle
Danke, du hast meinen Tag gemacht.
Muhammad Ashikuzzaman
2

Wie oben erwähnt wurde,

select global_name from global_name;

ist der Weg zu gehen.

Sie konnten v $ database / v $ instance / v $ thread nicht abfragen, da Ihr Benutzer nicht über die erforderlichen Berechtigungen verfügt. Sie können sie (über ein DBA-Konto) gewähren mit:

grant select on v$database to <username here>;
Phil
quelle