Por fin luego de mucho luchar ya dimos con la respuesta de esta cuestión que tantos lectores de este espacio han tenido. Si deseas compartir alguna información no dudes en aportar tu comentario.
Solución:
Supongo SELECT user FROM dual;
debería darte el usuario actual
y SELECT sys_context('userenv','instance_name') FROM dual;
el nombre de la instancia
Creo que puedes obtener SID como SELECT sys_context('USERENV', 'SID') FROM DUAL;
Si, como yo, su objetivo es obtener el host de la base de datos y el SID para generar una URL de Oracle JDBC, como
jdbc:oracle:thin:@:1521:
los siguientes comandos ayudarán:
Comando de consulta de Oracle para verificar el SID (o el nombre de la instancia):
select sys_context('userenv','instance_name') from dual;
Comando de consulta de Oracle para verificar el nombre de la base de datos (o host del servidor):
select sys_context('userenv', 'server_host') from dual;
Att. sergio marcelo
Solo para completar, también puede 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