Comprobando el sid de Oracle y el nombre de la base de datos


115

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 la vista no existe se aproxima un error.

Estoy usando la siguiente consulta para verificar el nombre de la base de datos actual

select name from v$database;

pero la tabla o la vista no existe se aproxima un error.

¿Alguna idea de los dos problemas anteriores?

Respuestas:


148

Supongo que 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 puede obtener SID como SELECT sys_context('USERENV', 'SID') FROM DUAL;


1
Gracias por una respuesta rápida. ¿Son la instancia y el SID de Oracle lo mismo?
Adnan

2
@Adnan No es necesario que sean iguales, ya que podría haber varias instancias de la base de datos ejecutándose en una sola máquina, son identificadas por SID
V4Vendetta

@adnan ¿Obtuviste los valores que necesitabas?
V4Vendetta

8
select sys_context('userenv','db_name') from dual;para el nombre de la base de datos y sid ya he agregado en la respuesta. Espero que esto te dé lo que quieres
V4Vendetta

2
Consulte este enlace
V4Vendetta

57

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:@<server_host>:1521:<instance_name>

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


Perfecto. Esto es exactamente lo que quería saber, pero no sabía cómo expresarlo.
Addison

Yo también. ¡Gracias Sergio!
Horseatingweeds

48

Solo para completar, también puede usar ORA_DATABASE_NAME.

Vale la pena señalar que no todos los métodos le brindan 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

No se necesitan permisos especiales para las consultas anteriores. Verificado mediante la creación de un nuevo usuario con privilegios de CONECTAR únicamente.
bdeem

22

Las vistas V $ son principalmente vistas dinámicas de métricas del sistema. Se utilizan para ajustar el rendimiento, supervisar la sesión, etc. Por lo tanto, el acceso está limitado a los usuarios de DBA de forma predeterminada, por lo que los está obteniendo ORA-00942.

La forma más sencilla de encontrar el nombre de la base de datos es:

select * from global_name;

Esta vista se otorga a PUBLIC, por lo que cualquiera puede consultarla.


¿Qué pasa con Oracle SID? ¿Existe algún método para verificarlo desde la cuenta de Scott?
Adnan

1
Ese es el nombre del servicio, no el SID.
jpmc26

5

Escriba en el sqlplussímbolo del sistema

SQL> select * from global_name;

entonces verá el resultado en el símbolo del sistema

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

Aquí primero un "ORCL" es el nombre de la base de datos, puede ser su sistema "XE" y otro lo que se dio en el tiempo de descarga de Oracle.


Gracias, has hecho mi dia.
Muhammad Ashikuzzaman

2

Como se ha mencionado anteriormente,

select global_name from global_name;

es el camino a seguir.

No puede consultar v $ database / v $ instance / v $ thread porque su usuario no tiene los permisos necesarios. Puede otorgarles (a través de una cuenta DBA) con:

grant select on v$database to <username here>;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.