如何确认数据库是Oracle&它使用SQL的版本是什么?

时间:2008-09-19 11:27:01

标签: sql oracle

我正在为应用程序构建安装程序。用户可以选择他们已配置的数据源并指定它是什么类型的数据库。我想确认数据库类型确实是Oracle,如果可能的话,通过向数据源发送SQL语句来确定它们运行的​​Oracle版本。

11 个答案:

答案 0 :(得分:274)

运行此SQL:

select * from v$version;

你会得到一个结果:

BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

答案 1 :(得分:46)

两种方法:

select * from v$version;

会给你:

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

Identifying Your Oracle Database Software Release

select * from product_component_version;

会给你:

PRODUCT VERSION STATUS
NLSRTL  11.1.0.6.0  Production
Oracle Database 11g Enterprise Edition  11.1.0.6.0  64bit Production
PL/SQL  11.1.0.6.0  Production
TNS for Solaris:    11.1.0.6.0  Production

答案 2 :(得分:29)

SQL> SELECT version FROM v$instance;
VERSION
-----------------
11.2.0.3.0

答案 3 :(得分:7)

您可以使用

SELECT * FROM v$version;

SET SERVEROUTPUT ON
EXEC dbms_output.put_line( dbms_db_version.version );

如果您不想解析v $ version的输出。

答案 4 :(得分:3)

如果您的实例已关闭,则需要在alert.log中查找版本信息

或者另一种粗略的方式是研究Oracle二进制文件,如果在Linux上托管数据库,请尝试在Oracle二进制文件上使用字符串。

strings -a $ORACLE_HOME/bin/oracle |grep RDBMS | grep RELEASE

答案 5 :(得分:1)

对于Oracle使用:

Select * from v$version;

对于SQL Server使用:

Select @@VERSION as Version

和MySQL使用:

Show variables LIKE "%version%";

答案 6 :(得分:0)

以下SQL语句:

select edition,version from v$instance

返回:

  • 数据库版本,例如“ XE”
  • 数据库版本,例如。 “ 12.1.0.2.0”

(在v $ instance视图上选择特权当然是必要的)

答案 7 :(得分:0)

我们可以使用以下方法获取Oracle的版本号。

方法编号:1

tf.train.Server

方法编号:2

set serveroutput on;
BEGIN 
DBMS_OUTPUT.PUT_LINE(DBMS_DB_VERSION.VERSION || '.' || DBMS_DB_VERSION.RELEASE); 
END;

答案 8 :(得分:0)

这将从Oracle 10开始生效

select version
      , regexp_substr(banner, '[^[:space:]]+', 1, 4) as edition 
from    v$instance
     ,  v$version where regexp_like(banner, 'edition', 'i');

答案 9 :(得分:0)

有多种方法可以检查Oracle数据库版本。最简单的方法是运行下面的SQL查询来检查Oracle Version

SQL> SELECT * FROM PRODUCT_COMPONENT_VERSION;
SQL> SELECT * FROM v$version;

答案 10 :(得分:-2)

这是一个简单的功能:

CREATE FUNCTION fn_which_edition
        RETURN VARCHAR2
    IS

    /*

        Purpose: determine which database edition

        MODIFICATION HISTORY
        Person      Date        Comments
        ---------   ------      -------------------------------------------
        dcox        6/6/2013    Initial Build

    */

    -- Banner
    CURSOR c_get_banner
    IS
        SELECT banner
          FROM v$version
         WHERE UPPER(banner) LIKE UPPER('Oracle Database%');

    vrec_banner c_get_banner%ROWTYPE; -- row record
    v_database VARCHAR2(32767); --

BEGIN
    -- Get banner to get edition
    OPEN c_get_banner;
    FETCH c_get_banner INTO vrec_banner;
    CLOSE c_get_banner;

    -- Check for Database type
    IF INSTR( UPPER(vrec_banner.banner), 'EXPRESS') > 0
    THEN
        v_database := 'EXPRESS';
    ELSIF INSTR( UPPER(vrec_banner.banner), 'STANDARD') > 0
    THEN
        v_database := 'STANDARD';
    ELSIF INSTR( UPPER(vrec_banner.banner), 'PERSONAL') > 0
    THEN
        v_database := 'PERSONAL';
    ELSIF INSTR( UPPER(vrec_banner.banner), 'ENTERPRISE') > 0
    THEN
        v_database := 'ENTERPRISE';
    ELSE
        v_database := 'UNKNOWN';
    END IF;

    RETURN v_database;
EXCEPTION
    WHEN OTHERS
    THEN
        RETURN 'ERROR:' || SQLERRM(SQLCODE);
END fn_which_edition; -- function fn_which_edition
/

完成。