Проверить историю SQL-патчей, состояние компонентов и невалидные объекты
OracleПатчинг и жизненный циклКоманда
-- 1) datapatch history (most recent at the bottom):
SELECT patch_id, patch_type, action, status, source_version, target_version,
TO_CHAR(action_time,'YYYY-MM-DD HH24:MI') AS action_time, description
FROM dba_registry_sqlpatch
ORDER BY action_time;
-- Failed entries and their log files:
SELECT install_id, patch_id, action, status, logfile
FROM dba_registry_sqlpatch
WHERE status <> 'SUCCESS';
-- In a CDB, for all PDBs (from root):
SELECT con_id, patch_id, action, status
FROM cdb_registry_sqlpatch ORDER BY con_id, action_time;
-- 2) Components must be VALID:
SELECT comp_id, comp_name, version_full, status
FROM dba_registry ORDER BY comp_id;
-- 3) Invalid object summary (compare before/after utlrp):
SELECT owner, object_type, COUNT(*) AS invalid_cnt
FROM dba_objects
WHERE status = 'INVALID'
GROUP BY owner, object_type
ORDER BY invalid_cnt DESC;Что делает
Одним взглядом показывает, действительно ли SQL-уровень обновился после патчинга (словарь соответствует бинарным файлам), какой патч в какой PDB завершился ошибкой, находятся ли компоненты словаря в состоянии VALID, и число невалидных объектов.
Когда использовать
Как шаг проверки после каждого datapatch, для фиксации базового состояния перед патчингом или обновлением и при подозрении на несоответствие после подключения PDB.
Внимание
Только чтение; лицензия не требуется. SOURCE_VERSION/TARGET_VERSION заполняются в модели RU 18c+. Если STATUS='WITH ERRORS', исправьте ошибку из LOGFILE и запустите datapatch повторно. Некоторые компоненты (например, неиспользуемые XDB/JAVA) могут показывать INVALID/REMOVED; сравните с состоянием до патча.