Como posso confirmar que um banco de dados é Oracle & que versão ele está usando SQL?
Estou a construir um instalador para uma aplicação. O usuário pode selecionar um datasource que tenha configurado e indicar que tipo de banco de dados é. Quero confirmar que o tipo de banco de dados é realmente Oracle, e se possível, que versão do Oracle eles estão executando, enviando uma declaração SQL para o datasource.
150
7 answers
Execute este SQL:
select * from v$version;
E vais ter um resultado como:
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
264
Author: Tony Andrews, 2008-09-19 11:29:06
Dois métodos:
select * from v$version;
Dar-te-á:
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
Ou identificando o lançamento do Software da sua base de Dados Oracle:
select * from product_component_version;
Dar-te-á:
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
44
Author: Lawrence, 2016-11-21 07:03:41
SQL> SELECT version FROM v$instance;
VERSION
-----------------
11.2.0.3.0
29
Author: Ugur, 2013-10-23 12:38:21
Pode utilizar
SELECT * FROM v$version;
Ou
SET SERVEROUTPUT ON
EXEC dbms_output.put_line( dbms_db_version.version );
Se não quiser analisar a saída da versão v$.
7
Author: Peter Lang, 2008-09-19 11:38:44
Se a sua instância está em baixo, está à procura da Informação da versão em alerta.log
Ou outra maneira crua é olhar para o binário Oracle, se DB em hospedado no Linux, tentar strings no binário Oracle.
strings -a $ORACLE_HOME/bin/oracle |grep RDBMS | grep RELEASE
3
Author: user3362908, 2014-04-11 01:33:54
Para uso Oráculo:
Select * from v$version;
Para o servidor SQL use:
Select @@VERSION as Version
E para uso do MySQL:
Show variables LIKE "%version%";
1
Author: Jack, 2016-09-19 20:26:48
Aqui está uma função simples:
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
/
Feito.
-2
Author: user2460369, 2013-12-30 16:57:51