Oracle数据库版本:oracle 11.2.0.4
PSU: p31537677_112040_Linux-x86-64.zip
OPATCH版本:
p6880880_112000_Linux-x86-64.zip
一、升级前检查
1、查看当前OPatch版本,并升级OPATCH版本
$ORACLE_HOME/OPatch/opatch version
mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak
unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME
cd 31537677/
$ORACLE_HOME/OPatch/opatch version
2、查看当前数据库的补丁情况
$ORACLE_HOME/OPatch/opatch lsinventory
3、升级前检查是否有冲突
cd 31537677/
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
二、安装Patch包
1、关闭数据库及监听器
2、安装Patch
$ORACLE_HOME/OPatch/opatch apply
Composite patch 31537677 successfully applied.
如果出现OPatch failed with error code 73错误,应该是数据库及监听相关进程没关闭(如em)
ps -ef |grep oracle
kill 相关进程后再执行opatch apply即可
3、升级数据字典并重新编译无效对象,确认日志没有报错(在Dataguard环境中,如果是单实例,则只执行主库中命令即可)
主库:
SQL>startup;
SQL>@?
/rdbms/admin/catbundle.sql psu apply; --在主库上执行
SQL> @?/rdbms/admin/utlrp.sql; --在主库上执行
Dataguard环境中,备库(不需要升级数据字典):
$sqlplus / as sysdba
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;
4、检查升级情况
SQL> select * from dba_registry_history;
$ORACLE_HOME/OPatch/opatch lsinventory
[oracle@t-mall OPatch]$ ./opatch lspatches
升级成功。