A verificar o Oracle sid e o nome da base de dados

Quero verificar o SID e o nome actual da base de dados.

estou a usar a seguinte consulta para verificar a oracle SID

select instance from v$thread;

mas a tabela ou a vista não existe vem aí um erro.

estou a usar a seguinte pesquisa para verificar o nome actual da base de dados

select name from v$database;

mas a tabela ou a vista não existe vem aí um erro.

Alguma ideia para mais de dois problemas?

Author: Adnan, 2011-06-09

6 answers

Presumo que {[[0]} deva dar-te o utilizador actual

E select sys_context('userenv','instance_name') from dual; o nome da instância

Acho que podes ficar com o SID como ... SELECT sys_context('USERENV', 'SID') FROM DUAL; ( não posso verificar isto agora.)
 109
Author: V4Vendetta, 2014-02-25 04:17:06

Se, como eu, o teu objectivo é fazer com que a máquina da base de dados e o SID gerem uma url do Oracle JDBC, como

jdbc:oracle:thin:@<server_host>:1521:<instance_name>

Os seguintes comandos irão ajudar:

Oracle query command to check the SID (or instance name):

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

Oracle query command to check database name (or server host):

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

Att. Sergio Marcelo

 45
Author: Sergio M C Figueiredo, 2013-12-11 17:01:31

Só para ser completo, também pode usar o ORA_ database_name.

Pode valer a pena notar que nem todos os métodos lhe dão o mesmo 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
 41
Author: Patrick Marchand, 2011-06-14 02:28:16

As vistas em v$ são principalmente vistas dinâmicas das métricas do sistema. Eles são usados para afinação de desempenho, monitoramento de sessão, etc. Então o acesso é limitado aos usuários de DBA por padrão, e é por isso que você está recebendo ORA-00942.

A maneira mais fácil de encontrar o nome da base de dados é:

select * from global_name;
Esta visão é concedida ao público, por isso qualquer um pode questioná-la.
 18
Author: APC, 2011-06-09 07:12:05

Tipo na linha de comandos sqlplus

SQL> select * from global_name;

Então o u irá ver o resultado na linha de comandos

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

Aqui o primeiro " ORCL "é nome de banco de dados,pode ser o seu sistema" XE " e outro que foi dado no tempo de download oracle.

 4
Author: anant kumar, 2015-06-09 03:12:09

Tal como foi mencionado acima,

select global_name from global_name;

É o caminho a seguir.

Não foi possível consultar a base de dados v$/v$instance/v$thread porque o seu utilizador não tem as permissões necessárias. Você pode concedê - los (através de uma conta DBA) com:

grant select on v$database to <username here>;
 1
Author: Phil, 2011-06-09 10:08:09