DBAtlas · 데이터베이스 운영 아틀라스

SQL 패치 이력, 구성 요소 상태, invalid 객체 확인

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인지, invalid 객체 수를 한눈에 보여 준다.

사용 시점

모든 datapatch 후 검증 단계로, 패치나 업그레이드 전 기준선을 확보하기 위해, PDB를 plug한 후 불일치가 의심될 때.

주의

읽기 전용이며 라이선스가 필요 없다. SOURCE_VERSION/TARGET_VERSION은 18c+ RU 모델에서 채워진다. STATUS='WITH ERRORS'이면 LOGFILE의 오류를 해결하고 datapatch를 다시 실행한다. 일부 구성 요소(예: 사용하지 않는 XDB/JAVA)는 INVALID/REMOVED로 표시될 수 있으므로 패치 전 상태와 비교한다.

DBAtlas에서 열기 →

관련 항목