Я создаю установщик для приложения. Пользователь получает выбор источника данных, который они настроили, и назначает тип базы данных. Я хочу подтвердить, что тип базы данных действительно является Oracle и, если возможно, какой версией Oracle они выполняются, отправив инструкцию SQL в источник данных.
Как я могу подтвердить, что база данных Oracle и какая версия использует SQL?
Ответ 1
Запустите этот 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
Ответ 2
Два метода:
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
ИЛИ Идентификация выпуска программного обеспечения Oracle Database:
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
Ответ 3
SQL> SELECT version FROM v$instance;
VERSION
-----------------
11.2.0.3.0
Ответ 4
Вы можете использовать
SELECT * FROM v$version;
или
SET SERVEROUTPUT ON
EXEC dbms_output.put_line( dbms_db_version.version );
если вы не хотите анализировать вывод версии v $.
Ответ 5
Если ваш экземпляр не работает, вы смотрите информацию о версии в alert.log
Или еще один грубый способ - изучить двоичный код Oracle. Если DB в хостинге Linux, попробуйте строки в двоичном формате Oracle.
strings -a $ORACLE_HOME/bin/oracle |grep RDBMS | grep RELEASE
Ответ 6
Если у вас есть привилегии, вы можете использовать ниже VIEW
или V$VERSION
:
SELECT VERSION FROM V$INSTANCE;
Ответ 7
Для использования Oracle:
Select * from v$version;
Для использования SQL-сервера:
Select @@VERSION as Version
и для использования MySQL:
Show variables LIKE "%version%";
Ответ 8
Следующий оператор SQL:
select edition,version from v$instance
возвращает:
- издание базы данных, например. "Х"
- версия базы данных, например. "12.1.0.2.0"
(конечно, необходимо выбрать привилегию в представлении v $ instance)
Ответ 9
Мы можем использовать методы ниже, чтобы получить номер версии Oracle.
Метод № 1
set serveroutput on;
BEGIN
DBMS_OUTPUT.PUT_LINE(DBMS_DB_VERSION.VERSION || '.' || DBMS_DB_VERSION.RELEASE);
END;
Метод № 2
SQL> select *
2 from v$version;
Ответ 10
Здесь простая функция:
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
/
Готово.