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 环境,请仅在一个节点上执行这些步骤。
-
对于正在修补的 Oracle 主页上运行的每个数据库实例,请使用 SQL*Plus 连接到数据库。连接并运行脚本,如下所示:
-
cd $ORACLE_HOME/rdbms/admin
-
sqlplus /nolog
-
SQL> CONNECT / AS SYSDBA
执行catbundle.sql脚本 -
SQL> @catbundle.sql psu apply
执行utlrp.sql 脚本 -
SQL> @utlrp.sql
-
检查以下日志文件是否有任何错误:$ORACLE_BASE/cfgtoollogs/catbundle
-
Cat bundle_PSU_APPLY.log
-
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