edition - oracle download
Comprobando el nombre del sid y del orĂ¡culo de Oracle (6)
Como se ha mencionado anteriormente,
select global_name from global_name;
es el camino a seguir.
No se pudo consultar v $ database / v $ instance / v $ thread porque su usuario no tiene los permisos necesarios. Puede otorgarlos (a través de una cuenta DBA) con:
grant select on v$database to <username here>;
Quiero verificar el SID y el nombre de la base de datos actual.
Estoy usando la siguiente consulta para verificar el SID de Oracle
select instance from v$thread;
pero la tabla o vista no existe, el error viene.
Estoy usando la siguiente consulta para verificar el nombre de la base de datos actual
select name from v$database;
pero la tabla o vista no existe, el error viene.
Alguna idea para los dos problemas anteriores?
Escriba en el símbolo del sistema sqlplus
SQL> select * from global_name;
a continuación, se verá el resultado en el símbolo del sistema
SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
Aquí primero uno "ORCL" es el nombre de la base de datos, puede ser su sistema "XE" y otro que se dio en el momento de la descarga del Oracle.
Las vistas V $ son principalmente vistas dinámicas de las métricas del sistema. Se utilizan para la optimización del rendimiento, la supervisión de sesiones, etc. Por lo tanto, el acceso está limitado a los usuarios de DBA de manera predeterminada, por lo que ORA-00942
.
La forma más fácil de encontrar el nombre de la base de datos es:
select * from global_name;
Esta vista se concede a PUBLIC, por lo que cualquiera puede consultarla.
Si, como yo, su objetivo es obtener el host de la base de datos y SID para generar una url Oracle JDBC, como
jdbc:oracle:thin:@<server_host>:1521:<instance_name>
los siguientes comandos ayudarán:
Comando de consulta de Oracle para verificar el SID (o nombre de instancia):
select sys_context(''userenv'',''instance_name'') from dual;
Comando de consulta de Oracle para verificar el nombre de la base de datos (o el host del servidor):
select sys_context(''userenv'', ''server_host'') from dual;
Att. Sergio Marcelo
Solo para completar, también puedes usar ORA_DATABASE_NAME.
Vale la pena señalar que no todos los métodos le dan el mismo resultado:
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
Supongo que select user from dual;
debería darle el usuario actual
y select sys_context(''userenv'',''instance_name'') from dual;
el nombre de la instancia
Creo que puede obtener SID como SELECT sys_context(''USERENV'', ''SID'') FROM DUAL;
( No puedo verificar esto ahora )