#sql #oracle #version
#sql #Oracle #версия
Вопрос:
ВСЕ,
Я ищу способ получить версию сервера Oracle DB как «X.Y.Z».
Я могу использовать запрос отсюда, но он покажет версию не только сервера.
Я могу использовать v$version
view, но результирующая строка будет содержать гораздо больше, чем просто «X.Y.Z».
Есть ли простой способ получить то, что я хочу?
TIA!!
Ответ №1:
SQL
SELECT version FROM PRODUCT_COMPONENT_VERSION
WHERE product LIKE 'Oracle Database%';
Результат:
VERSION
----------
18.0.0.0.0
18c / 19c: VERSION_FULL
также показывает установленное обновление выпуска
Просмотр ЭКЗЕМПЛЯРА V $ (требуется привилегия ВЫБОРА для ЭКЗЕМПЛЯРА SYS.V_ $):
SELECT version FROM v$instance;
DBA_REGISTRY (требуется привилегия выбора в SYS.DBA_REGISTRY):
Показывает версию для каждого установленного компонента.
SELECT * FROM dba_registry
WHERE comp_id = 'CATALOG';
PL / SQL
DECLARE
l_version VARCHAR2(20);
l_compatibility VARCHAR2(20);
BEGIN
DBMS_UTILITY.DB_VERSION(l_version, l_compatibility);
DBMS_OUTPUT.PUT_LINE(l_version);
END;
/
Результат:
18.0.0.0.0
Еще короче:
BEGIN
DBMS_OUTPUT.PUT_LINE(DBMS_DB_VERSION.VERSION|| '.' || DBMS_DB_VERSION.RELEASE);
END;
/
Результат:
18.0
Комментарии:
1. @ThomasKirchoff, op говорит, что SQL не PL / SQL. И третье решение дает больше, чем просто одну запись.
2. @Igor Я исправил запрос (OracleXE возвращает только одну запись). Я оставил часть PL / SQL и добавил другой способ, используя SQL.
Ответ №2:
Почему бы просто не запросить экземпляр v $?
SQL> select version from v$instance;
VERSION
-----------------
12.2.0.1.0
Не нужно возиться с pl / sql или вызываемыми процедурами.
Комментарии:
1. 00942. 00000 — «таблица или представление не существует»
Ответ №3:
ВЫБЕРИТЕ * ИЗ версии v $, ГДЕ баннер ТИПА «Oracle%»;
Комментарии:
1. Я не могу его использовать — он дает гораздо больше, чем X.Y.Z