2011-06-09 95 views
73

我想檢查SID和當前數據庫名稱。檢查Oracle sid和數據庫名稱

我使用下面的查詢檢查的Oracle SID

select instance from v$thread; 

但表或視圖不存在錯誤來了。

我使用下面的查詢檢查當前數據庫名

select name from v$database; 

但表或視圖不存在錯誤來了。

以上兩個問題的任何想法?

回答

93

我相信select user from dual;應該給你當前用戶

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

的名字,我相信你可以得到SID爲SELECT sys_context('USERENV', 'SID') FROM DUAL; 不能檢查這個現在

+0

感謝您的快速回復。實例和oracle SID一樣嗎? – Adnan 2011-06-09 04:49:15

+2

@Adnan他們不需要是相同的,因爲可以在單個機器上運行的數據庫的多個實例通過SID確定 – V4Vendetta 2011-06-09 04:51:34

+0

@adnan您是否得到了所需的值? – V4Vendetta 2011-06-09 05:08:09

18

V $視圖主要是系統度量的動態視圖。它們用於性能調整,會話監控等。因此,默認情況下訪問僅限於DBA用戶,這就是爲什麼您要獲得ORA-00942

查找數據庫名稱的最簡單的方法是:

select * from global_name; 

這一觀點被授予PUBLIC,所以任何人都可以查詢。

+0

有關oracle SID的內容?是否有任何方法從斯科特賬戶中檢查它? – Adnan 2011-06-09 08:59:42

1

正如上面提到,

select global_name from global_name; 

是要走的路。

您無法查詢v $ database/v $ instance/v $線程,因爲您的用戶沒有所需的權限。您可以(通過DBA賬戶)授予他們:

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

只是爲了完整性,您還可以使用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 
+0

上述查詢不需要特殊權限。僅通過創建具有CONNECT權限的新用戶進行驗證。 – bdeem 2015-08-03 15:18:33

41

如果像我一樣,你的目標是獲得數據庫主機和SID生成一個甲骨文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。 塞爾吉奧·馬塞洛

+0

完美。這正是我想知道的,但不知道如何表達。 – Addison 2016-07-20 07:13:35

+0

我也是。謝謝塞爾吉奧! – horseatingweeds 2017-04-05 22:31:58

4

類型上sqlplus命令提示符

SQL> select * from global_name; 

則u會看到結果在命令提示符下

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

這裏第一個「ORCL」是數據庫的名稱,可能是你的系統「 XE「以及其他關於oracle下載時間的內容。

+0

謝謝,你讓我的一天。 – 2015-11-04 10:25:30