Oracle 11g升级PSU详细步骤

Oracle 每个季度都会发布最新的补丁。对于生产运维人员来说,定期升级系统、打补丁是日常工作中不可缺少的部分。

相对于过去的版本,Oracle打补丁的方式已经变得比较简单,处理PSU的方法也发生了一些变化。在11g中,对于一些小bug的修复,我们可以使用OPatch工具进行补丁修复。对于大的版本升级,Oracle的PSU实际上就是一系列全新的安装文件,从MOS上下载之后就可以直接进行安装。

1、关闭数据库

Oracle的PSU升级不更新数据字典,风险较小,但是还是需要停库进行升级操作。

SQL> shutdown immediate

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
停止监听服务。
[oracle@bntjftest 20299015]$ lsnrctl stop
检查服务进程
[oracle@bntjftest 20299015]$  ps aux | grep ora_
oracle    6922  0.0  0.0  5700  796 pts/3    S+  17:48  0:00 grep ora_
[oracle@bntjftest 20299015]$  ps aux | grep tns
oracle    6924  0.0  0.0  5704  796 pts/3    S+  17:48  0:00 grep tns

2、检查opatch版本信息,需要的话进行升级


 

[oracle@bntjftest OPatch]$ ./opatch version
OPatch Version: 11.2.0.1.7
OPatch succeeded.

检查发现opatch版本较低,为默认版本,所以需要升级opatch。升级方法很简单,直接mv掉原来的opatch目录,然后解压最新版本的opatch软件到ORACLE_HOME下面即可

[oracle@bntjftest OPatch]$ unzip p6880880_112000_Linux-x86-64-opatch .zip  -d $ORACLE_HOME

再次检查版本,发现已经升级成功。
[oracle@bntjftest OPatch]$  ./opatch version
OPatch Version: 11.2.0.3.6
OPatch succeeded.


3、应用PSU补丁


1)插曲一、安装程序错误

[oracle@bntjftest OPatch]$ ./opatch apply ./20299015/
Oracle Interim Patch Installer version 11.2.0.3.6
Copyright (c) 2013, Oracle Corporation.  All rights reserved.

Oracle Home      : /app/oracle/product/11.2.0/dbhome_1
Central Inventory : /app/oraInventory
  from          : /app/oracle/product/11.2.0/dbhome_1/oraInst.loc
OPatch version    : 11.2.0.3.6
OUI version      : 11.2.0.4.0
Log file location : /app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2015-05-14_10-45-03AM_1.log


Verifying environment and performing prerequisite checks...
Prerequisite check "CheckPatchApplicableOnCurrentPlatform" failed.
The details are:
Patch ( 20299015 ) is not applicable>UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed.
Log file location: /app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2015-05-14_10-45-03AM_1.log
OPatch failed with error code 73


不使用自动模式,手工运行,一样报错:

[oracle@bntjftest 20299015]$ /app/oracle/product/11.2.0/dbhome_1/OPatch/opatch napply -skip_subset -skip_duplicate
Oracle Interim Patch Installer version 11.2.0.3.6
Copyright (c) 2013, Oracle Corporation.  All rights reserved.

Oracle Home      : /app/oracle/product/11.2.0/dbhome_1
Central Inventory : /app/oraInventory
  from          : /app/oracle/product/11.2.0/dbhome_1/oraInst.loc
OPatch version    : 11.2.0.3.6
OUI version      : 11.2.0.4.0
Log file location : /app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2015-05-14_10-45-03AM_1.log


Verifying environment and performing prerequisite checks...
Prerequisite check "CheckPatchApplicableOnCurrentPlatform" failed.
The details are:
Patch ( 20299015 ) is not applicable>UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed.
Log file location: /app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2015-05-14_10-45-03AM_1.log
OPatch failed with error code 73


上网baidu,“ UtilSession failed: Prerequisite check "CheckActiveFilesAndExecutables" failed”, 很快就查到解决办法,明确了其实就是因为有用户进程占用了文件libclntsh.so.11

[oracle@bntjftest 20299015]$  /sbin/fuser /app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11 .1
/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1:  16470m
[oracle@bntjftest 20299015]$  ps -ef | grep 16470
oracle    16470 5399  0 14:45 pts/2    00:00:00 sqlplus  as sysdba
oracle    7780  6617  0 18:47 pts/3    00:00:00 grep 16470
[oracle@bntjftest 20299015]$  kill -9  16470
[oracle@bntjftest 20299015]$  /sbin/fuser /app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1


3)再次重新应用PSU补丁,成功

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/212e4e99bb69e08dd82dcaaa5cbd1f5b.html