В Identifying Your Oracle Database Software Release Oracle утверждает, что вы можете найти свой «для конкретной платформы номер версии» (патч набор), запрашивая PRODUCT_COMPONENT_VERSION:Как можно программно найти текущий набор патчей Oracle?
Чтобы определить выпуск Oracle Database, который в настоящее время установлен и увидеть уровни высвобождения другие компоненты базы данных, которые вы используете, запросите представление словаря данных PRODUCT_COMPONENT_VERSION.
В соответствии с этим мы используем 11.2.0.3.0
SQL> select * from product_component_version;
PRODUCT VERSION STATUS
----------------------------------- --------------- ---------------
NLSRTL 11.2.0.3.0 Production
Oracle Database 11g 11.2.0.3.0 64bit Production
PL/SQL 11.2.0.3.0 Production
TNS for Linux: 11.2.0.3.0 Production
То же самое происходит с V $ VERSION (который PRODUCT_COMPONENT_VERSION представляет собой вид между прочим):
SQL> select * from v$version;
BANNER
---------------------------------------------------------
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
Однако, согласно DBA_REGISTRY_HISTORY база данных находится на 11.2.0.3.5 :
SQL> select action, namespace, version, id, comments from dba_registry_history;
ACTION NAMESPACE VERSION ID COMMENTS
--------------- --------- ---------- ---------- ------------------------------
VIEW INVALIDATE 8289601 view invalidation
UPGRADE SERVER 11.2.0.3.0 Upgraded from 11.2.0.1.0
APPLY SERVER 11.2.0.3 0 Patchset 11.2.0.2.0
APPLY SERVER 11.2.0.3 5 PSU 11.2.0.3.5
DBA_REGISTRY_HISTORY не обязательно содержит данные, поэтому я не могу надежно использовать это представление. И Oracle, похоже, не предоставляет стандартизованного метода заполнения поля комментариев, я, кажется, оставил выполнение следующего, а затем молюсь, чтобы он работал.
select max(regexp_replace(comments, '[^[:digit:].]'))
keep (dense_rank first order by action_time desc)
from dba_registry_history
Есть ли более простой и надежный способ определения текущей версии, включая набор патчей, программным путем?
1. Также возможно: я полностью неправильно понимаю это, и люди забыли, что они заплатят.
Интересно - баннер, показанный при входе в систему с SQL/Plus, и каждый отдельный вид или таблица в моей базе данных возвращает 0 для последней части номера версии *, за исключением * dba_registry_history. http://oracle-dba-yi.blogspot.de/2011/04/how-to-find-database-related-version.html утверждает, что «Последующие кумулятивные установки патчей-наборов ... не всегда будут отображаться в баннер ". и впоследствии рекомендует выбирать из dba_registry_history, так что, по-видимому, это путь. Также обратите внимание, что столбец идентификатора идентичен версии патча, но я понятия не имел, насколько это надежно. –