Após aplicar um Patch descrito NESTE artigo, foi reportado na view PDB_PLUG_IN_VIOLATIONS as seguintes mensagens (após checar a compatibilidade de um PDB no CDB):
SQL> set serveroutput on
DECLARE
compatible BOOLEAN := FALSE;
BEGIN
compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY( PDB_DESCR_FILE => '/home/oracle/HIPOFISE2.xml');
if compatible then
DBMS_OUTPUT.PUT_LINE('It is compatible');
else
DBMS_OUTPUT.PUT_LINE('It is NOT compatible');
end if;
END;
/SQL> 2 3 4 5 6 7 8 9 10 11
It is NOT compatible
PL/SQL procedure successfully completed.
SQL>
SQL> SELECT * FROM PDB_PLUG_IN_VIOLATIONS WHERE NAME='HIPOFISE2';
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
18-MAR-21 05.42.22.509718 AM
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
HIPOFISE2
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
SQL Patch ERROR
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
0 1
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
'18.3.0.0.0 Release_Update 1806280943' is installed in the CDB but '18.3.0.0.0 R
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
elease_Update 180628094' is installed in the PDB
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
PENDING
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
Call datapatch to install in the PDB or the CDB
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
1
TIME
---------------------------------------------------------------------------
NAME
--------------------------------------------------------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
CON_ID
----------
Ao tentar seguir o Oracle Note “Datapatch precheck failed : Release update is BEING installed to PDB but is not installed in CDB$ROOT.This will cause a patch mismatch between this PDB and CDB$ROOT (Doc ID 2604940.1)“, realizei o datapatch no CDB:
[oracle@oel8 OPatch]$ cd $ORACLE_HOME/OPatch
[oracle@oel8 OPatch]$ ./datapatch -verbose -pdbs CDB\$ROOT
SQL Patching tool version 18.0.0.0.0 Production on Thu Mar 18 06:18:44 2021
Copyright (c) 2012, 2018, Oracle. All rights reserved.
Log file for this invocation: /oracle/18.0.0/base/cfgtoollogs/sqlpatch/sqlpatch_32394_2021_03_18_06_18_44/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
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 interim SQL patches:
Interim patch 27923415 (OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)):
Binary registry: Installed
PDB CDB$ROOT: Applied successfully on 02-MAR-21 06.35.31.589073 AM
Current state of release update SQL patches:
Binary registry:
18.3.0.0.0 Release_Update 1806280943: Installed
PDB CDB$ROOT:
Applied 18.3.0.0.0 Release_Update 1806280943 successfully on 02-MAR-21 06.35.31.581343 AM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: CDB$ROOT
No interim patches need to be rolled back
No release update patches need to be installed
No interim patches need to be applied
SQL Patching tool complete on Thu Mar 18 06:18:52 2021
[oracle@oel8 OPatch]$
Aplicando nos PDBs e notamos que, por termos dropado o PDB HIPOFISE2, não será possível o seu datapatch:
[oracle@oel8 OPatch]$ ./datapatch -verbose -pdbs HIPOFISE1,HIPOFISE2
SQL Patching tool version 18.0.0.0.0 Production on Thu Mar 18 06:20:53 2021
Copyright (c) 2012, 2018, Oracle. All rights reserved.
Log file for this invocation: /oracle/18.0.0/base/cfgtoollogs/sqlpatch/sqlpatch_1163_2021_03_18_06_20_53/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...Error: prereq checks failed!
Some of the -pdbs containers were not found in the database. Bad containers: HIPOFISE2
Please refer to MOS Note 1609718.1 and/or the invocation log
/oracle/18.0.0/base/cfgtoollogs/sqlpatch/sqlpatch_1163_2021_03_18_06_20_53/sqlpatch_invocation.log
for information on how to resolve the above errors.
SQL Patching tool complete on Thu Mar 18 06:20:54 2021
Tentando gerar uma solução de contorno: plugar este PDB no CDB, para então realizar o datapatch posteriormente:
[oracle@oel8 OPatch]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Thu Mar 18 06:25:39 2021
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL> CREATE PLUGGABLE DATABASE HIPOFISE2 USING '/home/oracle/HIPOFISE2.xml' NOCOPY TEMPFILE REUSE;
Pluggable database created.
Abrindo o PDB:
SQL> ALTER PLUGGABLE DATABASE HIPOFISE2 OPEN;
Pluggable database altered.
Realizando datapatch novamente:
[oracle@oel8 OPatch]$ ./datapatch -verbose -pdbs HIPOFISE1,HIPOFISE2
SQL Patching tool version 18.0.0.0.0 Production on Thu Mar 18 06:31:21 2021
Copyright (c) 2012, 2018, Oracle. All rights reserved.
Log file for this invocation: /oracle/18.0.0/base/cfgtoollogs/sqlpatch/sqlpatch_4269_2021_03_18_06_31_21/sqlpatch_invocation.log
Connecting to database...OK
Gathering database info...done
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 interim SQL patches:
Interim patch 27923415 (OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)):
Binary registry: Installed
PDB HIPOFISE1: Applied successfully on 02-MAR-21 06.44.54.948445 AM
PDB HIPOFISE2: Applied successfully on 02-MAR-21 06.44.54.948445 AM
Current state of release update SQL patches:
Binary registry:
18.3.0.0.0 Release_Update 1806280943: Installed
PDB HIPOFISE1:
Applied 18.3.0.0.0 Release_Update 1806280943 successfully on 02-MAR-21 06.44.54.938616 AM
PDB HIPOFISE2:
Applied 18.3.0.0.0 Release_Update 1806280943 successfully on 02-MAR-21 06.44.54.938616 AM
Adding patches to installation queue and performing prereq checks...done
Installation queue:
For the following PDBs: HIPOFISE1 HIPOFISE2
No interim patches need to be rolled back
No release update patches need to be installed
No interim patches need to be applied
SQL Patching tool complete on Thu Mar 18 06:31:31 2021
[oracle@oel8 OPatch]$
Gerando um novo arquivo XML:
[oracle@oel8 ~]$ mv HIPOFISE2.xml HIPOFISE2.xml.OLD
[oracle@oel8 ~]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Thu Mar 18 06:32:41 2021
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
SQL>ALTER PLUGGABLE DATABASE HIPOFISE2 CLOSE IMMEDIATE;
Pluggable database altered.
SQL> ALTER PLUGGABLE DATABASE HIPOFISE2 UNPLUG INTO '/home/oracle/HIPOFISE2.xml';
Pluggable database altered.
Dropando apenas a referência do banco:
SQL> DROP PLUGGABLE DATABASE HIPOFISE2 KEEP DATAFILES;
Pluggable database dropped.
Realizando teste de compatibilidade e vendo que agora o PDB está apto a ser plugado no CDB:
SQL> set serveroutput on
DECLARE
compatible BOOLEAN := FALSE;
BEGIN
compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY( PDB_DESCR_FILE => '/home/oracle/HIPOFISE2.xml');
if compatible then
DBMS_OUTPUT.PUT_LINE('It is compatible');
else
DBMS_OUTPUT.PUT_LINE('It is NOT compatible');
end if;
END;
/SQL> 2 3 4 5 6 7 8 9 10 11
It is compatible
PL/SQL procedure successfully completed.
Pingback: Creating a new PDB using the DBMS_PDB package on a Non-CDB – Bruno Santos da Silva
Pingback: Applying Datapatch to PDB$SEED – Bruno Santos da Silva
Pingback: Applying Datapatch to PDB$SEED – SWIV
Pingback: Creating a new PDB using the DBMS_PDB package on a Non-CDB – SWIV