Ausgangssituation:
PSU wurde im Oracle Home eingespielt. Beim Einspielen auf CDB Ebene passiert ein Missgeschick – datatpatch.pl wurde abgebrochen.
Was nun?
Wenn wir kontrollieren, wie der Patch-Status in der Datenbank abgebildet ist, dann sehen wir, dass die Installation des PSU in der DB nicht abgeschlossen wurde:
select patch_id, patch_uid, version, status, bundle_series, description from dba_registry_sqlpatch;
PATCH_ID PATCH_UID VERSION STATUS BUNDLE_SERIES DESCRIPTION
---------- ---------- -------------------- --------------- ------------------------------ ----------------------------------------------------------------------------------------------------
24917972 20801908 12.1.0.2 END Database PSU 12.1.0.2.170117, Oracle JavaVM Component (JAN2017)
24732088 20937845 12.1.0.2 BEGIN DBBP DATABASE BUNDLE PATCH 12.1.0.2.170117
19790972 19744553 12.1.0.2 END DBBP DBMS_STATS CAUSING LIBRARY CACHE LOCKS WITH SUBPARTITION TABLE
24917972 20801908 12.1.0.2 SUCCESS Database PSU 12.1.0.2.170117, Oracle JavaVM Component (JAN2017)
19790972 19744553 12.1.0.2 SUCCESS DBMS_STATS CAUSING LIBRARY CACHE LOCKS WITH SUBPARTITION TABLE
Patch nochmals installieren?
So ausfallsicher ist datapatch.pl nun auch wieder nicht. Wenn wir das datapatch.pl nochmal auf die gleiche Datenbank loslassen, erfahren wir:
Current state of SQL patches:
Patch 19790972 (DBMS_STATS CAUSING LIBRARY CACHE LOCKS WITH SUBPARTITION TABLE):
Installed in the binary registry and CDB$ROOT PDB$SEED
Patch 24917972 (Database PSU 12.1.0.2.170117, Oracle JavaVM Component (JAN2017)):
Installed in the binary registry and CDB$ROOT PDB$SEED
Bundle series DBBP:
ID 170117 in the binary registry and ID 170117 in PDB CDB$ROOT, ID 170117 in PDB PDB$SEED
Ein Rollback des Patches ignoriert das datapatch.pl ebenfalls. Wir stecken also fest.
Den Druck auf Oracle erhöhen
Es bleibt uns jetzt nur noch die Möglichkeit, datapatch.pl dazu zu zwingen, die aktuellen Patches einzuspielen. Möglich ist das mit:
./datapatch -apply 24732088,24917972,19790972 -force -verbose
Wie wir jetzt sehen können, sind alle Patches im Status „SUCCESS“
select patch_id, patch_uid, version, status, bundle_series, description, ACTION from dba_registry_sqlpatch order by 1
PATCH_ID PATCH_UID VERSION STATUS BUNDLE_SERIES DESCRIPTION ACTION
---------- ---------- -------------------- --------------- ------------------------------ ---------------------------------------------------------------------------------------------------- ---------------
19790972 19744553 12.1.0.2 END DBBP DBMS_STATS CAUSING LIBRARY CACHE LOCKS WITH SUBPARTITION TABLE APPLY
19790972 19744553 12.1.0.2 SUCCESS DBMS_STATS CAUSING LIBRARY CACHE LOCKS WITH SUBPARTITION TABLE APPLY
19790972 19744553 12.1.0.2 SUCCESS DBMS_STATS CAUSING LIBRARY CACHE LOCKS WITH SUBPARTITION TABLE APPLY
24732088 20937845 12.1.0.2 BEGIN DBBP DATABASE BUNDLE PATCH 12.1.0.2.170117 APPLY
24732088 20937845 12.1.0.2 WITH ERRORS DBBP DATABASE BUNDLE PATCH 12.1.0.2.170117 APPLY
24732088 20937845 12.1.0.2 SUCCESS DBBP DATABASE BUNDLE PATCH 12.1.0.2.170117 APPLY
24732088 20937845 12.1.0.2 SUCCESS DBBP DATABASE BUNDLE PATCH 12.1.0.2.170117 APPLY
24917972 20801908 12.1.0.2 END Database PSU 12.1.0.2.170117, Oracle JavaVM Component (JAN2017) APPLY
24917972 20801908 12.1.0.2 SUCCESS Database PSU 12.1.0.2.170117, Oracle JavaVM Component (JAN2017) APPLY
24917972 20801908 12.1.0.2 SUCCESS Database PSU 12.1.0.2.170117, Oracle JavaVM Component (JAN2017) APPLY
10 rows selected.
Jetzt wird der PSU auch in der Datenbank als erfolgreich installiert ausgeweisen.