Oracle RAC 11G打补丁

Oracle RAC 11G打补丁

1 GI 部分

1.1 升级GI opatch

以下在RAC所有节点进行
先备份原GI opatch

[root@rac1 grid]# mv /u01/app/ grid /11.2.0/OPatch   /u01/app/ grid /11.2.0/OPatchbak

将GI压缩包解压到grid用户下ORACLE_HOME

[root@rac1 grid]$ unzip p6880880_112000_Linux-x86-64.zip -d <ORACLE_HOME>

对GI的opatch目录授权

[root@rac1 grid]# chown -R grid:oinstall /u01/app/grid/11.2.0/OPatch
chown oracle:oinstall /u01/app/oracle/product/11.2.0/dbhome_1/OPatch
chmod -R 775 /u01/app/grid/11.2.0/OPatch

grid用户下检查opatch版本

[root@rac1 grid]# su - grid
[grid@rac1 ~]$ $ORACLE_HOME/OPatch/opatch version
上一个命令的版本输出应为 11.2.0.3.5 或更晚。

1.2 root下生成ocm模板文件

[root@rac1 /]#cd /u01/app/grid/11.2.0/OPatch/ocm/bin 
[root@rac1 bin]#./emocmrsp

1.3 检查 Inventory有效性

[grid@rac1 OPatch]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

如果此命令成功,它将列出家庭中安装的 Oracle 组件。保存输出,以便您拥有应用修补程序之前的状态。

1.4 下载并解GI PSU压缩包

下载修补程序并解压缩到共享位置。此目录必须为空。此外,该目录应具有组的读取权限。

--创建psu目录用于解压
[root@rac1 opt]# mkdir  gi_psu
[root@rac1 opt]# mv p20996944_112030_ Linux-x86-64.zip /gi_psu/
[grid@rac1 gi_psu]$ unzip p20996944_112030_ Linux-x86-64.zip
[root@rac1 opt]# chown -R grid:oinstall /u01/gi_psu/
[root@rac1 opt]chmod -R 775 /u01/gi_psu
[root@rac1 opt]# mkdir  /u01/ohasd_psu
# mv p18370031_112040_Linux-x86-64.zip /u01/ohasd_psu/
# unzip p18370031_112040_Linux-x86-64.zip
# chown -R grid:oinstall /u01/ohasd_psu/
# chmod -R 775  /u01/ohasd_psu/

1.5 停止 EM 代理进程

您必须停止从数据库主页运行的 EM 代理进程,在修补 Oracle RAC 数据库或 GI Home 之前,以及在从 Oracle RAC 数据库或 GI Home 回滚修补程序之前。在要修补的节点或要回滚修补程序的节点上执行以下命令。
当 Oracle RAC 数据库主所有者执行时:

$ <ORACLE_HOME>/bin/emctl stop dbconsole
[oracle@rac1 bin]# $ORACLE_HOME/bin/emctl stop dbconsole

1.6 进行GI PSU补丁升级

$ORACLE_HOME/bin/srvctl stop database -d ats

作为root用户,在群集的每个节点上执行以下命令:

#opatch auto <UNZIPPED_PATCH_LOCATION> -oh <GI_HOME> -ocmrf <ocm response file>
/u01/app/grid/11.2.0/OPatch/opatch auto /u01/gi_psu  -oh /u01/app/grid/11.2.0/  -ocmrf  /u01/app/grid/11.2.0/OPatch/ocm/bin/ocm.rsp

$ORACLE_HOME/OPatch/opatch napply -oh $ORACLE_HOME -local /u01/ohasd_psu/18370031
[root@db1 OPatch]# ./opatch auto /u01/gi_psu  -oh /u01/app/grid/11.2.0/  -ocmrf  /u01/app/grid/11.2.0/OPatch/ocm/bin/ocm.rsp
Can't locate Switch.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./crs/auto_patch.pl line 2734.
BEGIN failed--compilation aborted at ./crs/auto_patch.pl line 2734.

[root@db1 OPatch]# cp /u01/app/grid/11.2.0/perl/lib/5.10.0/Switch.pm /usr/lib64/perl5/

1.7 执行数据库脚本

在oracle用户下
以下步骤将修改后的 SQL 文件加载到数据库中。对于 Oracle RAC 环境,请仅在一个节点上执行这些步骤。

  1. 对于正在修补的 Oracle 主页上运行的每个数据库实例,请使用 SQL*Plus 连接到数据库。连接并运行脚本,如下所示:

  2. cd $ORACLE_HOME/rdbms/admin

  3. sqlplus /nolog

  4. SQL> CONNECT / AS SYSDBA
    执行catbundle.sql脚本

  5. SQL> @catbundle.sql psu apply
    执行utlrp.sql 脚本

  6. SQL> @utlrp.sql

  7. 检查以下日志文件是否有任何错误:$ORACLE_BASE/cfgtoollogs/catbundle

  8. Cat bundle_PSU_APPLY.log

  9. Cat bundle_PSU_GENERATE.log

1.8 检查GI的补丁情况

[grid@rac1 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME |grep -i applied   

Patch  28204939     : applied on Wed Nov 21 21:45:23 CST 2018
Patch  28204707     : applied on Wed Nov 21 21:43:18 CST 2018
Patch  27735020     : applied on Wed Nov 21 21:41:57 CST 2018

2 DB PSU部分

2.1 更新oracle用户下opatch

以下在所有节点进行

Su - root
做好opatch备份
[root@rac1]#mv    $ORACLE_HOME/OPatch   $ORACLE_HOME/OPatch_backup
解压opatch到oracle用户ORACLE_HOME
Unzip  p20760997_112030_Linux-x86-64-db.zip  -d  /$ORACLE_HOME/

对opatch目录授权:

# chown -R oracle:oinstall  /u01/app/oracle/product/11.2.0/dbhome_1/OPatch
# chmod -R 775 /u01/app/oracle/product/11.2.0/dbhome_1/OPatch

root下生成ocm模板文件

[root@rac1 /]#cd /u01/app/oracle/product/11.2.0/dbhome_1/OPatch/ocm/bin 
[root@rac1 bin]#./emocmrsp

2.2 检查opatch版本

[root@rac1 grid]# su - oracle
[oracle@rac1 ~]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 11.2.0.3.20

2.3 检查补丁的兼容性

--创建目录存放db psu
# mkdir -p /u01/db_psu
# mv p20760997_11203_Linux-x86-64.zip /u01/db_psu/
# chown -R oracle:oinstall /u01/db_psu/
# chmod 775 /u01/db_psu/
执行命令检查补丁兼容性
#su - oracle
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph /u01/db_psu/20760997/
Invoking prereq "checkconflictagainstohwithdetail"
List of Homes on this system:
  Home name= Ora11g_gridinfrahome1, Location= "/u01/app/grid/11.2.0"
Prereq "checkConflictAgainstOHWithDetail" is not executed.
The details are:
Exception occured :	OracleHomeInventory gets null oracleHomeInfo
Summary of Conflict Analysis:
There are no patches that can be applied now.
在/u01/oraInventory/ContentsXML/inventory.xml

添加

<HOME NAME="OraDb11g_home1"LOC="/u01/app/oracle/product/11.2.0/dbhome_1" TYPE="O" IDX="2">
   <NODE_LIST>
      <NODE NAME="db1"/>
      <NODE NAME="db2"/>
   </NODE_LIST>
</HOME>

1、 先在节点1关掉实例

[oracle@rac1 db_psu]$ srvctl stop instance -d ats -i ats1
为ORACLE DB打psu补丁
[oracle@rac1 20760997]$cd /u01/db_psu/20760997
[oracle@rac1 20760997]$ $ORACLE_HOME/OPatch/opatch apply
输入3个Y
启动节点1实例
[oracle@rac1 db_psu]$ srvctl start instance -d ats -i ats1

2、关闭节点2实例

[oracle@rac1 db_psu]$ srvctl stop instance -d ats -i ats2

3、在节点2打补丁

[oracle@rac2 20760997]$ $ORACLE_HOME/OPatch/opatch apply
输入3个Y
单实例环境可指定模板进行安装
$ORACLE_HOME/OPatch/opatch apply -ocmrf $ORACLE_HOME/OPatch/ocm/bin/ocm.rsp

4、启动节点2实例

[oracle@rac2 db_psu]$ srvctl start instance -d ats -i ats2

2.5 执行oracle db脚本

以下步骤将修改后的 SQL 文件加载到数据库中。对于 RAC 环境,请仅在一个节点上执行这些步骤。

1.	对于正在修补的 Oracle 主页上运行的每个数据库实例,请使用 SQL*Plus 连接到数据库。以 SYSDBA 连接并运行脚本,如下所示:catbundle.sql
2.	cd $ORACLE_HOME/rdbms/admin
3.	sqlplus /nolog
4.	SQL> CONNECT / AS SYSDBA
5.	SQL> STARTUP
6.	SQL> @catbundle.sql psu apply
7.	SQL> @utlrp.sql

2.6 最后验证db的psu是否升级成功

1、每个节点下查询opatch应用记录
[oracle@rac2 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME |grep -i patch
[oracle@rac1 28204707]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME |grep -i applied
Patch  28204707     : applied on Wed Nov 21 22:54:36 CST 2018
2、查询psu版本记录
SQL> 
set pagesize 200 linesize 200
col time for a30
col action for a6
col version for a10
col BUNDLE_SERIES for a5
col COMMENTS for a30
select to_char(ACTION_TIME,'yyyy-MM-dd hh24:mi:ss') time,action,VERSION,BUNDLE_SERIES,COMMENTS from dba_registry_history;


TIME                           ACTION VERSION    BUNDL COMMENTS
------------------------------ ------ ---------- ----- ------------------------------
2018-01-26 13:47:15            APPLY  11.2.0.4   PSU   Patchset 11.2.0.2.0
2018-11-21 22:15:11            APPLY  11.2.0.4   PSU   Patchset 11.2.0.2.0
2018-11-21 23:25:08            APPLY  11.2.0.4   PSU   PSU 11.2.0.4.181016
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于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文档来确认补丁是否已经成功安装。 请注意,打补丁是一个重要的操作,需要谨慎对待。在进行补丁操作之前,建议先熟悉相关文档和参考资料,并在测试环境中进行测试,以确保操作的安全性和可行性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值