I was having trouble applying "patch 26550023 - COMBO of OJVM Component 12.1.0.2.170718 DB PSU + DB PSU 12.1.0.2.170814" in my Multitenant environment. The container database only had one PDB at the time, the PDB$SEED.
After having successfully applied opatch apply for both patches, I ran datapatch -verbose to load modified SQL into the database. I had already opened my container database in upgrade mode, and also opened the PDB$SEED in upgrade mode by executing
alter pluggable database all open upgrade;The state of the PDB$SEED could be confirmed in the alert log, as well as from v$pdb:
SELECT name, open_mode FROM v$pdbs; NAME OPEN_MODE --------- -------------- PDB$SEED MIGRATE
Still, I kept getting weird errors like
Bootstrapping registry and package to current versions...done
Error in bootstrap log /u01/oracle/cfgtoollogs/sqlpatch/sqlpatch_17273_2017_09_13_13_29_29/bootstrap1_CDBVEG_PDBSEED.log:
Error at line 7: ORA-06553: PLS-213: package STANDARD not accessible
Error at line 17: ORA-06553: PLS-213: package STANDARD not accessible
Error at line 25: SP2-0310: unable to open file "/u01/oracle/product/12102/sqlpatch/FALSE.sql"
Prereq check failed, exiting without installing any patches.
There was little information about the problem and potential workarounds to be found on the internet.
After trying different options without success, I could find no other solution than to drop the PDB$SEED container, so that patching could continue.
Here's how:
SQL> -- necessarry to avoid "ORA-65017: seed pluggable database may not be dropped or altered" alter session set "_oracle_script"=TRUE; Session altered. SQL> alter pluggable database PDB$SEED close; Pluggable database altered. SQL> drop pluggable database pdb$seed including datafiles; Pluggable database dropped. SQL> alter session set "_oracle_script"=FALSE; Session altered. SQL> select * from cdb_pdbs; no rows selected
After this point, run datapatch again:
oracle@myserver:[cdbveg]# datapatch -verbose SQL Patching tool version 12.1.0.2.0 Production on Wed Sep 13 13:34:05 2017 Copyright (c) 2012, 2016, Oracle. All rights reserved. Log file for this invocation: /u01/oracle/cfgtoollogs/sqlpatch/sqlpatch_18072_2017_09_13_13_34_05/sqlpatch_invocation.log Connecting to database...OK Note: Datapatch will only apply or rollback SQL fixes for PDBs that are in an open state, no patches will be applied to closed PDBs. Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation (Doc ID 1585822.1) Bootstrapping registry and package to current versions...done Determining current state...done Current state of SQL patches: Patch 26027162 (Database PSU 12.1.0.2.170718, Oracle JavaVM Component (JUL2017)): Installed in the binary registry only Bundle series PSU: ID 170814 in the binary registry and not installed in any PDB Adding patches to installation queue and performing prereq checks... Installation queue: For the following PDBs: CDB$ROOT Nothing to roll back The following patches will be applied: 26027162 (Database PSU 12.1.0.2.170718, Oracle JavaVM Component (JUL2017)) 26609783 (DATABASE PATCH SET UPDATE 12.1.0.2.170814) Installing patches... Patch installation complete. Total patches installed: 2 Validating logfiles... Patch 26027162 apply (pdb CDB$ROOT): SUCCESS logfile: /u01/oracle/cfgtoollogs/sqlpatch/26027162/21319014/26027162_apply_CDBVEG_CDBROOT_2017Sep13_13_34_18.log (no errors) Patch 26609783 apply (pdb CDB$ROOT): SUCCESS logfile: /u01/oracle/cfgtoollogs/sqlpatch/26609783/21481899/26609783_apply_CDBVEG_CDBROOT_2017Sep13_13_34_18.log (no errors) SQL Patching tool complete on Wed Sep 13 13:34:52 2017
Verification that the patches are applied:
SQL> select ACTION,DESCRIPTION,STATUS,BUNDLE_SERIES from registry$sqlpatch; ACTION DESCRIPTION STATUS BUNDLE_SERIES ---------- ---------------------------------------------------------------------- -------------------- -------------------- APPLY Database PSU 12.1.0.2.170718, Oracle JavaVM Component (JUL2017) SUCCESS APPLY DATABASE PATCH SET UPDATE 12.1.0.2.170814 SUCCESS PSU