Oracle bietet eine Reihe an Möglichkeiten um den Namen der Datenbank, mit der man gerade per SQL*Plus verbunde ist, zu ermitteln.
Mit Hilfe von V$DATABASE
v$database
ist eine View in der Informationen über die Datenbank zu finden sind. Unteranderen findet man hier auch den Namen der Datenbank.
1 2 3 4 5 |
select name from v$database; NAME --------- XE |
Die Abfrage aus dem Beispiel funktioniert nur, wenn der User auch die Berechtigung dafür hat. Normalerweise ist diese nur dem DBA
Wenn Du keinen DBA Zugang hast oder nicht berechtigt bist auf die v$database
View zu zugreifen, dann hast Du noch die Möglichkeit die folgenden Methoden zu nutzen.
GLOBAL_NAME
Der globale Datenbankname in der View GLOBAL_NAME
besteht aus den Parametern db_name
und db_domain
. Diese View ist für alle eingeloggten Benutzer erreichbar und kann somit leicht abgefragt werden
1 2 3 4 5 |
SELECT name FROM global_name; NAME --------- XE |
oder aber direkt über den Systemparamter
1 |
SELECT value FROM v$parameter WHERE name = 'db_name'; |
Data Dictionary Tabelle props$
Eine weitere Möglichkeit den globalen Datenbanknamen auslesen zu können bietet die Data Dictionary Tabelle props$
an.
1 |
SELECT name, value$ FROM props$ WHERE name = 'GLOBAL_DB_NAME'; |
Package dbms_utility
Last but not Least, kann der Name mit Hilfe des Packages dbms_utility
auf folgende Weise ermittelt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
SQL> DECLARE 1 i number 2 dbname varchar2(20); 3 begin 4 :i:=dbms_utility.get_parameter_value('db_name', :i, :dbname ); 5 end; 6 / PL/SQL procedure successfully completed. SQL> print dbname DBNAME ---------------------------------------------------------------------- XE |