2015-12-08 95 views
1

我很感興趣,我如何才能從Oracle版本獲取編號?從Oracle版本獲取編號

select * from v$version where banner like 'Oracle%'; 

BANNER                   
-------------------------------------------------------------------------------- 
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production 


BANNER 
-------------------------------------------------------------------------------- 
    CON_ID 
---------- 
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production  
     0 
+3

V $ instance.version – Bacs

回答

2

有很多方法。

你可以在V $ INSTANCE檢查VERSION觀點:

SQL> SELECT version FROM V$INSTANCE; 

VERSION 
----------------- 
12.1.0.1.0 

你可以在PRODUCT_COMPONENT_VERSION檢查VERSION觀點:

SQL> SELECT VERSION 
    2 FROM PRODUCT_COMPONENT_VERSION 
    3 WHERE product LIKE '%Oracle Database%'; 

VERSION 
-------------------------------------------- 
12.1.0.1.0 

你可以使用DBMS_DB_VERSION包:

SQL> set serveroutput on 
SQL> BEGIN 
    2 DBMS_OUTPUT.PUT_LINE(DBMS_DB_VERSION.VERSION || '.' || DBMS_DB_VERSION.RELEASE); 
    3 END; 
    4/
12.1 

PL/SQL procedure successfully completed. 

UPDATE要得到雙方的產品和版本作爲單獨的列,你可以這樣做:

SQL> SELECT product AS edition, 
    2   version 
    3 FROM PRODUCT_COMPONENT_VERSION 
    4 WHERE product LIKE '%Oracle Database%'; 

EDITION         VERSION 
---------------------------------------- ---------- 
Oracle Database 12c Enterprise Edition 12.1.0.1.0 
+0

我在命令行獲得SELECT版本FROM V $ INSTANCE 錯誤:7列:21 錯誤報告 - SQL錯誤:ORA-00942:表或視圖不存在 00942. 00000 - 「表或視圖不存在」 *原因: *操作: –

+0

@PeterPenzov它表示您登錄的用戶沒有權限訪問'v $ instance'視圖。嘗試使用SYS或SYSTEM用戶。 –

+0

我如何授予此特權? –

2

只是爲了好玩,使用您提交的查詢:

select 
    banner, 
    regexp_substr(banner,'[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*') version, 
    substr(banner,1, instr(banner,'Release')-2) edition 
from v$version 
where banner like 'Oracle%'; 

PS:我不會在常見會話中使用該版本的第五部分。其他許多人也這樣做。

+0

你知道我怎麼只顯示數據庫的版本嗎? –

+0

我的查詢提取。你只是玩substr和instr。 –

+0

很高興你接受了我的答案,但我會使用'select * from PRODUCT_COMPONENT_VERSION;'作爲Lalit提到的,而不是這些字符串提取:) –