Opatch的使用

1.更新Opatch;
2.打补丁;
3.grid 打补丁;

1.更新Opatch(实验版本: oracle:11.2.0.3.0):
默认安装数据库后,在ORACLE_HOME 下会有个OPatch 文件夹,更新前先检查当前Opatch 版本:
[oracle@sywu2 OPatch]$ ./opatch lsinventory
Invoking OPatch 11.2.0.1.7

Oracle 中间补丁程序安装程序版本 11.2.0.1.7
版权所有 (c) 2011, Oracle Corporation。保留所有权利。


Oracle Home       : /s01/app/oracle/product/11.2.0/dbhome_1
Central Inventory : /g01/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 11.2.0.1.7
OUI version       : 11.2.0.3.0
Log file location : /s01/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2014-06-27_23-03-26下午.log
注:有些时候产品清单加载失败,会导致打补丁时出错
[sywu@sywu OPatch]$ ./opatch lsinventory
Invoking OPatch 11.1.0.6.6

Oracle 中间补丁程序安装程序版本 11.1.0.6.6
版权所有 (c) 2009, Oracle Corporation。保留所有权利。


Oracle 主目录       : /u01/app/product/11.2.0/db_1
主产品清单: /g01/oraInventory
   从           : /etc/oraInst.loc
OPatch 版本    : 11.1.0.6.6
OUI 版本       : 11.2.0.1.0
OUI 位置      : /u01/app/product/11.2.0/db_1/oui
日志文件位置 : /u01/app/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2014-06-27_21-51-13下午.log

Patch history file: /u01/app/product/11.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt

List of Homes on this system:

  Home name= Ora11g_gridinfrahome1, Location= "/g01/11ggrid/11.2.0/grid"
  Home name= OraDb11g_home1, Location= "/s01/app/oracle/product/11.2.0/dbhome_1"
产品清单加载失败... OPatch cannot load inventory for the given Oracle Home.
Possible causes are:
   Oracle Home dir. path does not exist in Central Inventory
   Oracle Home is a symbolic link
   Oracle Home inventory is corrupted
LsInventorySession 失败: OracleHomeInventory gets null oracleHomeInfo

OPatch failed with error code 73

解决方法:
1)找到产品清单文件,默认安装成功后会在 /etc/oraInst.loc 和oracle 根目录 oraInventory 文件夹下 ,如果/etc/下没有就到ORACLE 安装根目录找到文件夹: oraInventory,里面有oraInst.loc;复制一个到 /etc下
2)到$ORACLE_HOME/oui/bin/ 执行如下脚本加载清单:
./runInstaller -silent -attachHome \
ORACLE_HOME=$ORACLE_HOME \
ORACLE_HOME_NAME="ORACLE_HOME"
3) 加载成功后再次到OPatch目录下执行 ./opatch lsinventory 确认产品清单加载是否成功;

有些时候你打过补丁,然后删除过$ORACLE_HOME/.patch_storage 下的文件,下次重新再打补丁是可能会报:" OracleHomeInventory 无法创建锁文件",怎么处理都不行,也并不是操作权限问题:
[grid@sywu2 shared]$ opatch lsinventory

Oracle 中间补丁程序安装程序版本 11.2.0.3.3
版权所有 (c) 2012, Oracle Corporation。保留所有权利。


Oracle Home       : /g01/11ggrid/11.2.0/grid
Central Inventory : /g01/oraInventory
   from           : /g01/11ggrid/11.2.0/grid/oraInst.loc
OPatch version    : 11.2.0.3.3
OUI version       : 11.2.0.3.0
Log file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/opatch2014-06-28_16-51-09下午_1.log

OracleHomeInventory 无法创建锁文件, 可能是由于 OPatch 会话失败。加载的产品清单可能无法正确显示 Oracle 主目录中的内容。
Lsinventory Output file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2014-06-28_16-51-09下午.txt
解决方法:
1)首先查看 $ORACLE_HOME/.patch_storage 目录下是否有patch_locked 文件:
[grid@sywu2 shared]$ ls -las $ORACLE_HOME/.patch_storage
总用量 32
4 drwxr-x---  4 grid oinstall 4096 6月  28 16:55 .
4 drwxr-xr-x 68 grid oinstall 4096 6月  28 16:55 ..
4 drwxr-xr-x  5 grid oinstall 4096 6月  28 11:18 15876003_Jan_11_2013_06_19_07
4 -rw-r--r--  1 grid oinstall 1949 6月  28 11:18 interim_inventory.txt
4 -rw-r--r--  1 grid oinstall   93 6月  28 11:18 LatestOPatchSession.properties
4 drwxr-xr-x  3 grid oinstall 4096 6月  28 11:17 NApply
4 -rw-r--r--  1 grid oinstall   56 6月  28 11:18 patch_locked
4 -rw-r--r--  1 grid oinstall   52 6月  28 11:18 record_inventory.txt
2)如果有,将patch_locked 文件命名为其它名或移走,然后再次尝试 opatch lsinventory:
[grid@sywu2 shared]$ mv /g01/11ggrid/11.2.0/grid/.patch_storage/patch_locked  /g01/11ggrid/11.2.0/grid/.patch_storage/patch_locked_bkp
[grid@sywu2 shared]$ opatch lsinventory

Oracle 中间补丁程序安装程序版本 11.2.0.3.3
版权所有 (c) 2012, Oracle Corporation。保留所有权利。


Oracle Home       : /g01/11ggrid/11.2.0/grid
Central Inventory : /g01/oraInventory
   from           : /g01/11ggrid/11.2.0/grid/oraInst.loc
OPatch version    : 11.2.0.3.3
OUI version       : 11.2.0.3.0
Log file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/opatch2014-06-28_17-01-51下午_1.log

Lsinventory Output file location : /g01/11ggrid/11.2.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2014-06-28_17-01-51下午.txt
这是因为 patch_locked 文件中记录了相关补丁号,当加载时出错或找不到它:
[grid@sywu2 shared]$ cat /g01/11ggrid/11.2.0/grid/.patch_storage/patch_locked_bkp
Locked for patch  :  15876003
Locked by class   :  apply

1.1 更新前先备份原来的Opatch:
[oracle@sywu2 dbhome_1]$ tar -cvf Opatch_20140627.tar OPatch
1.2 解压新版Opatch 文件到$ORACLE_HOME 目录下:
[oracle@sywu2 dbhome_1]$ /tmp/unzip p6880880_112000_Linux-x86-64.zip -d $ORACLE_HOME
Archive:  p6880880_112000_Linux-x86-64.zip
   creating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/README.html 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/README.txt 
   creating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/oplan.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/oracle.oplan.classpath.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/automation.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/OsysModel.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/EMrepoDrivers.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/Validation.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/ValidationRules.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/osysmodel-utils.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/CRSProductDriver.jar 
   creating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/apache-commons/
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/apache-commons/commons-cli-1.0.jar 
   creating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/activation.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/jaxb-api.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/jaxb-impl.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/jlib/jaxb/jsr173_1.0_api.jar 
  inflating: /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/oplan/oplan 
replace /s01/app/oracle/product/11.2.0/dbhome_1/OPatch/docs/FAQ? [y]es, [n]o, [A]ll, [N]one, [r]ename: A
.............
1.3 确认OPatch 更新是否成功:
[oracle@sywu2 OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.3

OPatch succeeded.
可能会有未知错误,如版本问题,操作前一定记得备份原来的OPatch;

2.打补丁:
打补丁前要关闭数据库实例、监听程序,补丁要与更新的OPatch对应:
2.1 解压补丁文件到$ORACLE_HOME 目录下:
[oracle@sywu2 OPatch]$ unzip /tmp/p14727310_112030_Linux-x86-64.zip -d $ORACLE_HOME
[oracle@sywu2 dbhome_1]$ cd 14727310/
[oracle@sywu2 14727310]$ ls
13343438  13696216  13923374  14275605  14727310  patchmd.xml  README.html  README.txt
  README.html 文件上有介绍打补丁方法,打补丁前先查看一下;
开始打补丁:
[oracle@sywu2 14727310]$ $ORACLE_HOME/OPatch/opatch apply

2.2 将变更的 SQL Files 导入数据库:
[oracle@sywu2 ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@sywu2 admin]$ sqlplus / as sysdba
SQL> @catbundle.sql psu apply

打补丁信息在 V$version 视图中是查询不到的,要通过 dba_registry_history 视图查询:
SQL>  select action_time,action,namespace,version,bundle_series,comments from dba_registry_history;

ACTION_TIME                                                                 ACTION     NAMESPACE  VERSION
--------------------------------------------------------------------------- ---------- ---------- ------------------------------
BUNDLE_SERIES                  COMMENTS
------------------------------ --------------------
02-MAY-14 11.12.11.444913 PM                                                APPLY      SERVER     11.2.0.3
PSU                            Patchset 11.2.0.2.0

27-JUN-14 11.42.54.320914 PM                                                APPLY      SERVER     11.2.0.3

查询具体的Opatch 版本信息和补丁信息
[oracle@sywu OPatch]$ cd $ORACLE_HOME/OPatch
[oracle@sywu OPatch]$ ./opatch lsinventory 

Oracle 中间补丁程序安装程序版本 11.2.0.3.3
版权所有 (c) 2012, Oracle Corporation。保留所有权利。


Oracle Home       : /s01/app/oracle/product/11.2.0/dbhome_1
Central Inventory : /g01/oraInventory
   from           : /s01/app/oracle/product/11.2.0/dbhome_1/oraInst.loc
OPatch version    : 11.2.0.3.3
OUI version       : 11.2.0.3.0
Log file location : /s01/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2014-06-28_00-03-04上午_1.log

Lsinventory Output file location : /s01/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2014-06-28_00-03-04上午.txt

--------------------------------------------------------------------------------
已安装的顶级产品 (1):

Oracle Database 11g                                                  11.2.0.3.0
此 Oracle 主目录中已安装 1 个产品。


中间补丁程序 (1) :

Patch  14727310     : applied on Fri Jun 27 22:35:15 CST 2014
Unique Patch ID:  15663328
Patch description:  "Database Patch Set Update : 11.2.0.3.5 (14727310)"
   Created on 27 Dec 2012, 00:06:30 hrs PST8PDT
Sub-patch  14275605; "Database Patch Set Update : 11.2.0.3.4 (14275605)"
Sub-patch  13923374; "Database Patch Set Update : 11.2.0.3.3 (13923374)"
Sub-patch  13696216; "Database Patch Set Update : 11.2.0.3.2 (13696216)"
Sub-patch  13343438; "Database Patch Set Update : 11.2.0.3.1 (13343438)"
   Bugs fixed:
     13566938, 13593999, 10350832, 14138130, 12919564, 13624984, 13588248
     13080778, 13804294, 14258925, 12873183, 13645875, 12880299, 14664355
     14409183, 12998795, 14469008, 13719081, 13492735, 12857027, 14263036
     14263073, 13742433, 13732226, 12905058, 13742434, 12849688, 12950644
     13742435, 13464002, 12879027, 13534412, 14613900, 12585543, 12535346
     12588744, 11877623, 12847466, 13649031, 13981051, 12582664, 12797765
     14262913, 12923168, 13612575, 13384182, 13466801, 13484963, 11063191
     13772618, 13070939, 12797420, 13041324, 12976376, 11708510, 13742437
     13026410, 13737746, 13742438, 13326736, 13001379, 13099577, 14275605
     13742436, 9873405, 9858539, 14040433, 12662040, 9703627, 12617123
     12845115, 12764337, 13354082, 13397104, 12964067, 13550185, 12780983
     12583611, 14546575, 13476583, 15862016, 11840910, 13903046, 15862017
     13572659, 13718279, 13657605, 13448206, 13419660, 14480676, 13632717
     14063281, 13430938, 13467683, 13420224, 14548763, 12646784, 14035825
     12861463, 12834027, 15862021, 13377816, 13036331, 14727310, 13685544
     13499128, 15862018, 12829021, 15862019, 12794305, 14546673, 12791981
     13503598, 13787482, 10133521, 12718090, 13399435, 14023636, 12401111
     13257247, 13362079, 12917230, 13923374, 14480675, 13524899, 13559697
     14480674, 13916709, 14076523, 13773133, 13340388, 13366202, 13528551
     12894807, 13343438, 13454210, 12748240, 14205448, 13385346, 15853081
     12971775, 13035804, 13544396, 13035360, 14062795, 12693626, 13332439
     14038787, 14062796, 12913474, 14841409, 14390252, 13370330, 14062797
     13059165, 14062794, 12959852, 13358781, 12345082, 12960925, 9659614
     13699124, 14546638, 13936424, 13338048, 12938841, 12658411, 12620823
     12656535, 14062793, 12678920, 13038684, 14062792, 13807411, 12594032
     13250244, 15862022, 9761357, 12612118, 13742464, 14052474, 13457582
     13527323, 15862020, 12780098, 13502183, 13705338, 13696216, 10263668
     15862023, 13554409, 15862024, 13103913, 13645917, 14063280, 13011409

3.grid 打补丁:
  打补丁前同样的先关掉实例、监听程序,停止相关服务释放资源:
[grid@sywu2 15876003]$ su -l root
密码:
[root@sywu2 install]# cd $GRID_HOME/crs/install
[root@sywu2 install]# ./rootcrs.pl -unlock
切换到grid 用户下解压补丁、打补丁(补丁文件: p14727347_112030_Linux-x86-64.zip,该补丁文件包含了db补丁和grid补丁):
[grid@sywu2 shared]$ unzip p14727347_112030_Linux-x86-64.zip -d /tmp/
[grid@sywu2 tmp]$ cd 15876003/
[grid@sywu2 15876003]$ ls
14727310  15876003  bundle.xml  README.html  README.txt
[grid@sywu2 15876003]$ opatch napply -oh $GRID_HOME -local /tmp/15876003/14727310/
然后根据相关提示操作;14打完再打15876003 grid 补丁:
[grid@sywu2 15876003]$ opatch napply -oh $GRID_HOME -local /tmp/15876003/15876003/
打完grid 补丁后切换到oracle 用户下打db补丁:
[grid@sywu2 ~]$ su -l oracle
[oracle@sywu2 ~]$  /tmp/15876003/15876003/custom/server/15876003/custom/scripts/prepatch.sh -dbhome $ORACLE_HOME
/tmp/15876003/15876003/custom/server/15876003/custom/scripts/prepatch.sh completed successfully.

[oracle@sywu2 ~]$ opatch napply -oh $ORACLE_HOME -local /tmp/15876003/15876003/custom/server/15876003/

[oracle@sywu2 ~]$ opatch napply -oh $ORACLE_HOME -local /tmp/15876003/14727310/

[oracle@sywu2 ~]$ /tmp/15876003/15876003/custom/scripts/postpatch.sh -dbhome $ORACLE_HOME
打完db补丁后切换到root用户,完成后续操作和启动相关服务:
[oracle@sywu2 ~]$ su -l root
[root@sywu2 ~]# /g01/11ggrid/11.2.0/grid/rdbms/install/rootadd_rdbms.sh
[root@sywu2 ~]# /g01/11ggrid/11.2.0/grid/crs/install/rootcrs.pl -patch
检查相关服务是否启动;
[root@sywu2 ~]#  crsctl check crs
[root@sywu2 ~]#   crsctl stat res -t
这样补丁打完:
[grid@sywu grid]$ opatch lspatches
15876003;Grid Infrastructure Patch Set Update : 11.2.0.3.5 (14727347)
14727310;Database Patch Set Update : 11.2.0.3.5 (14727310)

最后启动数据库将变更的 SQL Files 导入数据库:
[oracle@sywu2 ~]$ cd $ORACLE_HOME/rdbms/admin
[oracle@sywu2 admin]$ sqlplus / as sysdba
SQL> @catbundle.sql psu apply

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29523859/viewspace-1331155/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29523859/viewspace-1331155/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值