Oracle 12c PSU rollback and upgrade

 

Oracle 12c

问题:

假如oracle patch PSU  22191659 binary 同时通过$ORACLE_HOME/OPatch/datapatch -verbose升级了数据库字典。

接下来,继续patch super-patch PSU 25433980 binary,但是并未执行$ORACLE_HOME/OPatch/datapatch -verbose

 

那么接下来有这么两件事需要牢记在心

1.虽然  super-patch只是binary,但是数据库在启动时还是运行最新的lib库,只是某些组建的数据库字典并未更新而已。

并且,在 super-patch binary成功patch之后,sub-set patch PSU 不再生效。

Sub-set patch [22139226] has become inactive due to the application of a super-set patch [25437695]

 

2.在这种情况下,想回滚 super-patch,那么尽管操作即可。类似如下:

$ORACLE_HOME/OPatch/opatch nrollback -id 25437695 - OJVM
$ORACLE_HOME/OPatch/opatch nrollback -id 25171037 -DB

这两个操作跑完之后,oracle会保留select  * from dba_registry_sqlpatch的patch PSU。

也就是说,单纯 super-patch binary的回滚,会保留了数据字典的sub-patch,如执行上面操作,下面的patch_id PSU 21948354 会保留下来并且生效。

SQL> select * from dba_registry_sqlpatch;
PATCH_ID VERSION STATUS
---------- ---------- ----------------------
21948354 19553095 1 SUCCESS

 

3.在rollback 未更新数据库字典的binary时,不需要跑$ORACLE_HOME/OPatch/datapatch -verbose

在rollback 已经更新数据库字典的PSU时,需要按升级操作将所有操作执行一遍,否则 dba_registry_sqlpatch试图中的信息会不准确。

 

附带

oracle 12c PSU upgrade

1.SQL>shutdown DB

2.stop listener

3.stop agent and ome and TFA (if you have)

4.exit all sqlplus and plsql or kill all sessions from external

5.mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak(optional)

6.unzip p6880880_122010_Linux-x86-64.zip -d $ORACLE_HOME

7.unzip p25433980_121020_Linux-x86-64.zip  -d 25433980

8.$ORACLE_HOME/OPatch/opatch napply 25433980/25433980

9.SQL>startup upgrade;

10.$ORACLE_HOME/OPatch/datapatch -verbose

11.start all you have stop at frist

12.finish

 

oracle 12c PSU rollback 

 

1.SQL>shutdown DB

2.stop listener

3.stop agent and ome and TFA (if you have)

4.exit all sqlplus and plsql or kill all sessions from external

5.$ORACLE_HOME/OPatch/opatch nrollback -id 25437695(e.g)

6.SQL>startup upgrade;

7.$ORACLE_HOME/OPatch/datapatch -verbose

8.start all you have stop at frist

9.congratulations

 

posted @ 2017-10-15 00:49  烤酸奶  阅读(484)  评论(0编辑  收藏  举报