Oracle 更新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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Oracle 19c RAC,打补丁的过程如下: 1. 首先,确认你的Oracle Grid Infrastructure(GI)和数据库软件版本是否需要打补丁。你可以在Oracle官方文档中查找相关信息,比如Oracle Support网站上的补丁信息。 2. 在打补丁之前,建议先在测试环境中进行测试,确保补丁能够成功应用并不会对系统稳定性和可用性造成负面影响。 3. 下载相应的补丁文件。你可以在Oracle Support网站上找到适用于你的版本和平台的补丁。 4. 在所有节点上停止Oracle RAC数据库实例和监听器。可以使用`srvctl`命令来停止和启动实例和监听器。 5. 在所有节点上停止Oracle Grid Infrastructure服务。同样可以使用`crsctl`命令来停止和启动GI服务。 6. 在所有节点上备份相关文件和配置,包括数据库文件、GI配置文件、以及相关配置目录。 7. 在每个节点上应用补丁。你可以使用OPatch工具来应用Oracle补丁。首先,解压缩补丁文件,然后使用OPatch工具进行应用。具体的命令格式可能会有所不同,你可以参考补丁文档中的说明。 8. 在每个节点上应用完补丁后,需要执行相关的脚本来完成补丁的安装。这些脚本通常在补丁的文档或Readme文件中提供。 9. 在所有节点上启动Oracle Grid Infrastructure服务。 10. 在所有节点上启动数据库实例和监听器。 11. 验证补丁是否成功应用。可以查看日志文件和相关的Oracle文档来确认补丁是否已经成功安装。 请注意,打补丁是一个重要的操作,需要谨慎对待。在进行补丁操作之前,建议先熟悉相关文档和参考资料,并在测试环境中进行测试,以确保操作的安全性和可行性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值