检查oracle sid和数据库名称

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

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

select instance from v$thread; 

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

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

 select name from v$database; 

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

以上两个问题的任何想法?

我认为select user from dual; 应该给你当前的用户

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

我相信你可以得到SID作为SELECT sys_context('USERENV', 'SID') FROM DUAL;现在不能检查这个

为了完整起见,您还可以使用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 

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

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

以下命令将有所帮助:

Oracle查询命令来检查SID(或实例名称):

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

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

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

ATT。 塞尔吉奥·马塞洛

V $视图主要是系统度量的dynamic视图。 它们用于性能调优,会话监控等。因此默认情况下,访问仅限于DBA用户,这就是为什么你得到ORA-00942

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

 select * from global_name; 

这个视图被授予PUBLIC,所以任何人都可以查询它。

inputsqlplus命令提示符

 SQL> select * from global_name; 

那么你会看到命令提示符的结果

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

这里第一个“ORCL”是数据库名称,可能是你的系统“XE”和其他oracle上下载的时间。

如上所述,

 select global_name from global_name; 

是要走的路。

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

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