检查oracle sid和数据库名称

时间:2011-06-09 04:32:06

标签: oracle oracle10g

我想检查SID和当前数据库名称。

我正在使用以下查询来检查oracle SID

select instance from v$thread;

但表或视图不存在错误即将到来。

我正在使用以下查询来检查当前数据库名称

select name from v$database;

但表或视图不存在错误即将到来。

对上述两个问题有任何想法吗?

7 个答案:

答案 0 :(得分:127)

我认为select user from dual;应该为您提供当前用户

select sys_context('userenv','instance_name') from dual;实例的名称

我相信你可以获得SELECT sys_context('USERENV', 'SID') FROM DUAL;的SID( 现在无法检查

答案 1 :(得分:51)

如果像我一样,您的目标是获取数据库主机和SID以生成Oracle JDBC URL,如

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

以下命令将有所帮助:

用于检查SID(或实例名称)的Oracle查询命令:

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

用于检查数据库名称(或服务器主机)的Oracle查询命令:

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

ATT。 塞尔吉奥马塞洛

答案 2 :(得分:44)

为了完整起见,您还可以使用ORA_DATABASE_NAME。

值得注意的是,并非所有方法都能为您提供相同的输出:

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

答案 3 :(得分:19)

V $视图主要是系统指标的动态视图。它们用于性能调整,会话监控等。默认情况下,访问仅限于DBA用户,这就是您获得ORA-00942的原因。

查找数据库名称的最简单方法是:

select * from global_name;

此视图已授予PUBLIC,因此任何人都可以查询它。

答案 4 :(得分:4)

键入sqlplus命令提示符

SQL> select * from global_name;

然后你将在命令提示符

上看到结果
SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

这里第一个&#34; ORCL&#34;是数据库名称,可能是您的系统&#34; XE&#34;以及oracle下载时间的其他内容。

答案 5 :(得分:2)

如上所述,

select global_name from global_name;

是要走的路。

您无法查询v $ database / v $ instance / v $ thread,因为您的用户没有所需的权限。您可以通过以下方式授予他们(通过DBA帐户)

grant select on v$database to <username here>;

答案 6 :(得分:0)

查询数据库名称:

从v $ database中选择名称;

查询SID:

从v $ instance中选择instance_name;