Patch Set是在大版本上来修复多个bug的补丁集,例如11.2是一个大版本,11.2.0.4就是一个Patch sets。
PSU(Patch Set Updates)是Oracle比较推荐的补丁更新集,包括了CPU以及一些影响比较严重的补丁。例如11.2.0.4.x就是一个PSU。它有
RDBMS PSU和GI PSU,GI PSU中包含了RDBMS PSU。
CPU(Critical Patch Update)/SPU(Security Patch Updates),CPU也就是现在SPU,是Oracle一些安全性方面的补丁。CPU只能安装在基版本或Patch Set上。打过PSU的数据库不能再打CPU,推荐打PSU。
Composite patch是在11.2.0.2.7或11.2.0.3.2及之后推出的PSU都是Composite patches,里面是由sub-patch组成,主要是为了节省升级时间。
One off/Interim patches就是小补丁。里面有两种特别的补丁,Overlay patch和Merge patch。Overlay patch是当一个小补丁和PSU冲突的时候,在这个PSU上会新出一个小补丁,这个小补丁就是Overlay patch。Merge patch是当一个或多个补丁之间冲突的时候,这些补丁修改相同文件,需要新生成一个合集的补丁,这个补丁就是Merge patch。
Bundle patch是补丁集和大版本在一起安装的。例如windows上安装的补丁集就是Bundle patches。
Online patch就是不需要停机就可以打的补丁。
Opatch工具可以应用补丁、回滚补丁、检测冲突、冲突建议、产品补丁列表。推荐文档MOS Patch 6880880下载最新的Opatch工具。
Opatch补丁安装会做预安装检查、备份影响的文件、更新文件、Relink、更新Inventory文件、确认完成。
Opatch补丁安装准备:
1.关闭数据库、监听、EM。
2.使用fuser –c $ORACLE_HOME(Linux)/slibclean(AIX)。
3.建议备份$ORACLE_HOME,relink all。
4.查看补丁README。
Opatch补丁冲突查检不影响数据库运行,补丁冲突检查命令:opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir ./xxxxxxxx(要安装的所有补丁所在的路径)。
补丁冲突处理方法:
1.如果准备打的PSU和已经安装的小补丁冲突 或者 准备打的小补丁和已经安装的PSU冲突
1.1.如果PSU不是最新的PSU,看最新的PSU是不是已经修复冲突的小补丁。
1.2.如果最新的PSU没有修复对应的小补丁,在https://updates.oracle.com/download/冲突补丁号(ConflictingPatchnumber).html查找对应的PSU的Overlay patch。
1.2.1.如果是准备打的PSU和已经安装的小补丁冲突,并且PSU的版本是11.2.0.3.1或11.2.0.2.6及之前的PSU
1.2.1.1 打PSU时会自动回滚掉冲突的小补丁。
1.2.1.2 打上面网址找到的Overlay patch。
1.2.2.如果是准备打的PSU和已经安装的小补丁冲突,并且PSU的版本是11.2.0.3.2或11.2.0.2.7及之后的PSU
1.2.2.1 下载和准备打的PSU中sub-patch冲突的Overlay patch。
1.2.2.2 手动回滚(opatch rollback -id 冲突的小补丁号)已经安装的冲突的小补丁。
1.2.2.3 打PSU
1.2.2.4 打Overlay patch
1.3.如果没有在上面网址找到对应的Overlay patch,则可以在MOS文档1061295.1查找补丁对应的补丁号。
2.如果准备打的CPU和已经安装的小补丁冲突
2.1.如果CPU不是最新的CPU,看最新的PSU是不是已经修复冲突的小补丁。
2.2.在MOS上输入冲突的补丁号和小补丁号去查找Merge patch。
3.如果准备打的小补丁和已经安装的小补丁冲突
3.1.在MOS上输入冲突的补丁号和小补丁号去查找Merge patch。
4.如果准备打的CPU和已经安装的PSU冲突
4.1.如果PSU不是最新的PSU,看最新的PSU已经包含了准备打的CPU。
补丁冲突申请SR:要打的补丁、$ORACLE_HOME/cfgtoollogs/opatch/opatch.log、uname –a、file $ORACLE_HOME/bin/sqlplus、Opatch lsinventory –detail或者执行MOS 1430571.1下的opatchdiag.sh
: