it-swarm.com.de

Überprüfen der Oracle-Seite und des Datenbanknamens

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

Ich verwende folgende Abfrage zur Überprüfung der Oracle-SID

select instance from v$thread;

aber die Tabelle oder Ansicht existiert nicht. Es kommt ein Fehler.

Ich verwende folgende Abfrage zur Überprüfung des aktuellen Datenbanknamens

select name from v$database;

aber die Tabelle oder Ansicht existiert nicht. Es kommt ein Fehler.

Irgendeine Idee für die obigen zwei Probleme?

99
Adnan

Ich gehe davon aus, dass select user from dual; Ihnen den aktuellen Benutzer geben sollte

und select sys_context('userenv','instance_name') from dual; der Name der Instanz

Ich glaube, Sie können SID als SELECT sys_context('USERENV', 'SID') FROM DUAL; (kann das jetzt nicht überprüfen)

131
V4Vendetta

Wenn Sie wie ich das Ziel haben, den Datenbank-Host und die SID zum Generieren einer Oracle-JDBC-URL abzurufen, wie 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 Server-Hosts):

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

Att. Sergio Marcelo

52

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

Es kann erwähnenswert sein, 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
46

Die V $ -Ansichten sind hauptsächlich dynamische Ansichten von Systemmetriken. Sie werden für die Leistungsoptimierung, Sitzungsüberwachung usw. verwendet. Daher ist der Zugriff standardmäßig auf DBA-Benutzer beschränkt, weshalb Sie 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.

19
APC

Geben Sie an der Eingabeaufforderung sqlplus ein

SQL> select * from global_name;

dann sehen Sie das Ergebnis auf der Eingabeaufforderung

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

Hier ist das erste "ORCL" der Datenbankname, möglicherweise Ihr System "XE" und anderes, was bei der Oracle-Ladezeit angegeben wurde.

4
anant kumar

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 ihnen (über ein DBA-Konto) gewähren mit:

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