标签:sel str tap cat stop zip sele ini _id
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
Oracle 12c PSU rollback and upgrade
标签:sel str tap cat stop zip sele ini _id
原文地址:http://www.cnblogs.com/joewan/p/7669274.html