Hi all,
So, in a new 12c environment datapatch failed on the following:
ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-65108: invalid use of a cursor belonging to another container kpdbaKillPdbSessions: Starting kill. 2019-01-29 07:09:21.486584 :kjcipctxinit(): (pid|psn)=(25|2): initialised and linked pctx 0x00007FFB1A7B49C8 into process list ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-65108: invalid use of a cursor belonging to another container
Point is that was failing for the PDB$SEED. When upgrading, there are phases where you need the seed opened read-write. But in general you don’t to that yourself.
The scripts to run in each container are called through catcon.pl which, by default, opens the seed read-write and ensures that the initial open mode is restored at the end even in case of error.
So how to manually proceed with this?
1. Apply the datapatch first to other PDBs using the -pds clause:
./datapatch -verbose -pdbs PDB1,PDB2
2. Open PDB$SEED for Oracle Scripts:
SYS@CDB$ROOT SQL> alter session set "_oracle_script"=true; Session altered. SYS@CDB$ROOT SQL> alter pluggable database pdb$seed open read write force; Pluggable database PDB$SEED altered.
3. Apply the datapatch to the PDB$SEED
$ORACLE_HOME/OPatch/datapatch -verbose -pdbs ‘PDB$SEED’
4. Close PDB$SEED and Mount it back
SYS@CDB$ROOT SQL> alter session set container=PDB$SEED Session altered. SYS@CDB$ROOT SQL> shutdown immediate Pluggable Database closed ++ From Root SYS@CDB$ROOT SQL> alter pluggable database PDB$SEED open read only;
Hope it helps, cheers!