检查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>;