A verificar o Oracle sid e o nome 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?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
SELECT sys_context('USERENV', 'SID') FROM DUAL;
(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
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
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.
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.
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>;