Estoy construyendo un instalador para una aplicación. El usuario puede seleccionar una fuente de datos que haya configurado y nominar qué tipo de base de datos es. Quiero confirmar que el tipo de base de datos es de hecho Oracle y, de ser posible, qué versión de Oracle están ejecutando enviando una declaración SQL a la fuente de datos.¿Cómo puedo confirmar que una base de datos es Oracle y qué versión usa SQL?
Respuesta
Ejecutar este SQL:
select * from v$version;
Y obtendrá un 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
¿Funciona esto para todas las versiones de Oracle? – modius
Todas las versiones de Oracle que he usado alguna vez. ¡No puedo hablar por Oracle 5.0 y antes! –
Esta técnica me falló en Oracle 11.2.0.2.0, pero estoy teniendo algunos problemas de permisos de inicio de sesión. Sin embargo, para aquellos que pueden estar en el mismo barco que yo, la segunda técnica se menciona en esta página por Lawrence hizo el trabajo: seleccionar * de product_component_version – sugardaddy
Puede utilizar
SELECT * FROM v$version;
o
SET SERVEROUTPUT ON
EXEC dbms_output.put_line(dbms_db_version.version);
si no desea analizar el resultado de v $ version.
dos métodos:
select * from v$version;
os haré:
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
O Identifying Your Oracle Database Software Release:
select * from product_component_version;
os haré:
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
SQL> SELECT version FROM v$instance;
VERSION
-----------------
11.2.0.3.0
La mejor respuesta, ya que solo proporciona el número de versión, por lo tanto, no es necesario analizar el resultado para extraer la versión en un script automatizado. – pseudocode
No funciona con Oracle 11g. – tjati
@omeinush Funciona perfectamente conmigo (11.2.0.3). – collapsar
Si tiene privilegios, se puede utilizar a continuación VIEW
o V$VERSION
:
SELECT VERSION FROM V$INSTANCE;
No soy el votante atrasado, pero veo una respuesta duplicada anterior arriba ... que puede ser la razón del voto abajo. –
Aquí es una función simple:
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
/
Done.
Si la instancia está abajo, usted es mirada de información de versión en alert.log
Otra forma cruda es mirar en Oracle binario, DB Si en alojado en Linux, trata de cuerdas de Oracle binario.
strings -a $ORACLE_HOME/bin/oracle |grep RDBMS | grep RELEASE
Para el uso de Oracle:
Select * from v$version;
Para el uso del servidor SQL:
Select @@VERSION as Version
y para MySQL uso:
Show variables LIKE "%version%";
- 1. ¿Cómo puedo confirmar que una base de datos es Postgres y qué versión usa SQL?
- 2. ¿Cómo puedo evitar que Oracle SQL Developer cierre la conexión de base de datos?
- 3. ¿Cómo crear una base de datos pequeña y simple usando Oracle 11g y SQL Developer?
- 4. ¿Qué es el integrador de datos Oracle?
- 5. Servidor SQL: ¿Cómo saber si una base de datos es una base de datos del sistema?
- 6. ¿Cómo se comprueba qué versión de SQL Server para una base de datos utilizando TSQL?
- 7. ¿Cómo hago una versión de una base de datos de SQL Server?
- 8. ¿A qué asocia Hibernate un tipo de datos booleano cuando usa una base de datos Oracle de forma predeterminada?
- 9. Base de datos DB2 en el desarrollador Oracle SQL
- 10. ¿Cómo puedo ver qué versión de JavaScript usa mi navegador?
- 11. ¿Cómo iniciar sesión en una base de datos Oracle?
- 12. ¿Cómo vaciar una base de datos SQL?
- 13. ¿Por qué usaría la base de datos Oracle?
- 14. Ataque al sitio ASP que usa una base de datos del servidor SQL
- 15. base de datos SQLite Android local, bloqueo, y la versión
- 16. ¿Qué es una "base de datos generalizada"?
- 17. Cómo hacer una copia de seguridad y restaurar la base de datos ORACLE 11g Como la base de datos SQL2005
- 18. ¿Cómo crear una base de datos en Oracle XE?
- 19. ¿Cómo puedo generar el script de exportación de la base de datos Oracle usando Oracle SQL Developer?
- 20. ¿Cuál es la mejor forma de archivar datos en una base de datos Oracle?
- 21. ¿Cómo se conecta a una base de datos MySQL usando Oracle SQL Developer?
- 22. Oracle SQL Developer y PostgreSQL
- 23. ¿Qué hace (+) en Oracle SQL?
- 24. ¿Cómo puedo confirmar que FireFox está utilizando la versión de depuración de Flash Player?
- 25. Enlace de la base de datos Oracle
- 26. ¿Cuáles son las formas de insertar y recuperar datos BLOB de la base de datos Oracle utilizando SQL?
- 27. Motores de base de datos y cumplimiento ANSI SQL
- 28. ¿Cómo puedo eliminar todas las sesiones que se conectan a mi base de datos Oracle?
- 29. Qué es una clase de contrato y cómo se usa
- 30. ¿Cómo puedo obtener un volcado de SQL de una base de datos de SQL Server 2008?
¿Qué pasa con su lenguaje de programación? Este tipo de pregunta realmente depende de la API de idioma para el acceso a la base de datos. – gizmo
Supongo que tengo un origen de datos JDBC. Si la conexión falla, o la instrucción sql genera un error, entonces ciertamente puedo atraparlo y tratarlo como corresponda. – modius