我正在为应用程序构建安装程序。用户可以选择他们已配置的数据源并指定它是什么类型的数据库。我想确认数据库类型确实是Oracle,如果可能的话,通过向数据源发送SQL语句来确定它们运行的Oracle版本。
答案 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
返回:
(在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
/
完成。