暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

11G RAC+DG打补丁

原创 吾喾 2022-08-02
1344

核心步骤:
1.主库禁用日志传送到备库
2.备库应用补丁,但不执行脚本(catpatch.sql等),不启用日志恢复
3.主库应用补丁
4.执行脚本
5.启动主库重新开启日志传送到备库
6.ADG备库开启同步进程
7.检查补丁应用情况

环境:11G DG rac+rac psu181016升级到201020,ojvm181016到201020O

--检查adg同步状态
set lines 200 pages 200

select to_char(SYSDATE,'yyyymmdd hh24:mi:ss') CTIME,NAME,VALUE,DATUM_TIME from V$DATAGUARD_STATS WHERE NAME LIKE '%lag';

--检查OPatch版本(主备库)
打PSU需要用到Opatch工具。Opatch的版本必须符合补丁包readme文档中版本要求,否则需要升级Opatch版本。

更新OPatch
节点1 grid用户
[grid@dg1 OPatch]$ /u01/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch lspatches
There are no Interim patches installed in this Oracle Home.

[root@dg1 soft]# unzip p6880880_112000_Linux-x86-64.zip
[root@dg1 soft]# cd /u01/app/11.2.0/grid/
[root@dg1 grid]# mv OPatch OPatchbak2022
[root@dg1 grid]# mv /u01/soft/OPatch .
[root@dg1 grid]# chown -R grid.oinstall OPatch
[root@dg1 grid]#
[root@dg1 grid]# su - grid

[grid@dg1 ~]$ /u01/app/11.2.0/grid/OPatch/opatch version
OPatch Version: 11.2.0.3.28

OPatch succeeded.
节点1 oracle用户
[root@dg1 soft]# unzip p6880880_112000_Linux-x86-64.zip
[root@dg1 soft]# cd /u01/app/oracle/product/11.2.0/dbhome_1/
[root@dg1 dbhome_1]# mv OPatch OPatchbak2022
[root@dg1 dbhome_1]# mv /u01/soft/OPatch .
[root@dg1 dbhome_1]# chown -R oracle.oinstall OPatch
[root@dg1 dbhome_1]#
[root@dg1 dbhome_1]# su - oracle

[oracle@dg1 ~]$ /u01/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch version
OPatch Version: 11.2.0.3.28

OPatch succeeded.



1.主库禁用日志传送到备库
show parameter log_archive_dest_2
show parameter log_archive_dest_state_2

alter system set log_archive_dest_state_2=defer scope=both sid='*';


停止备库日志应用
alter database recover managed standby database cancel;

2.备库应用补丁,但不执行脚本(catbundle.sql等),不启用日志恢复


节点1/2 解压补丁包
cd /u01/soft/
unzip p31718723_112040_Linux-x86-64.zip
chown grid.oinstall /u01/soft/31718723 -R



环境检查

分别切换到grid和oracle用户执行以下命令来检查opatch是否支持对当前数据库打补丁:

$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

检查PSU补丁是否有冲突(根据Readme操作):

cd /u01/soft/31718723
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph .


更新PSU(停止备库日志应用后,可以主备各打各的补丁)

su - root
保险起见,先做预演:

/u01/app/11.2.0/grid/OPatch/opatch auto /u01/soft/31718723 -oh /u01/app/11.2.0/grid -report
/u01/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch auto /u01/soft/31718723 -oh /u01/app/oracle/product/11.2.0/dbhome_1 -report

没报错,再打GI、DB补丁:

节点1/2 GI补丁 root执行
/u01/app/11.2.0/grid/OPatch/opatch auto /u01/soft/31718723 -oh /u01/app/11.2.0/grid



节点1/2DB补丁 root执行
/u01/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch auto /u01/soft/31718723 -oh /u01/app/oracle/product/11.2.0/dbhome_1


查看补丁信息
$ORACLE_HOME/OPatch/opatch lsinventory
$ORACLE_HOME/OPatch/opatch lspatches



*********************************************************************************************************************************************************************

DB补丁升级过程可能会造成$ORACLE_HOME/bin/oracle文件属组异常,需停库修改为正确的属组:
alert日志报错:

Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_j000_116120.trc:
ORA-27140: attach to post/wait facility failed
ORA-27300: OS system dependent operation:invalid_egid failed with status: 1
ORA-27301: OS failure message: Operation not permitted
ORA-27302: failure occurred at: skgpwinit6
ORA-27303: additional information: startup egid = 10009 (asmadmin), current egid = 10001 (oinstall)
Process J000 died, see its trace file
kkjcre1p: unable to spawn jobq slave process
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_cjq0_97512.trc:

解决方法:
[root@dg1 31718723]# chown oracle.asmadmin /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@dg1 31718723]# chmod 6751 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
[root@dg1 31718723]#
[root@dg1 31718723]# ll /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
-rwsr-s--x 1 oracle asmadmin 206955988 Jul 22 22:48 /u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
*********************************************************************************************************************************************************************



--OJVM 查看readme文档(要求OPatch version 11.2.0.3.25 or later)
su - oracle

$ORACLE_HOME/OPatch/opatch lsinventory
$ORACLE_HOME/OPatch/opatch lspatches

unzip -d /u01/soft/ p31668908_112040_Linux-x86-64.zip

cd /u01/soft/31668908
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

cd /u01/soft/31668908

$ORACLE_HOME/OPatch/opatch apply



*********************************************************************************************************************************************************************
提示之前的ojvm失效,可忽略。
Patch 31668908 successfully applied.
Sub-set patch [28440700] has become inactive due to the application of a super-set patch [31668908].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /u01/app/oracle/product/11.2.0/dbhome_1/cfgtoollogs/opatch/opatch2022-07-31_10-46-50AM_1.log

OPatch succeeded.
*********************************************************************************************************************************************************************



3.主库应用补丁


GI、DB应用补丁步骤同备库


OJVM应用补丁步骤同备库



4.执行脚本
--执行catbundle脚本 (在主库一个节点即可)
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba

@catbundle.sql psu apply

QUIT

--编译无效对象执行utlrp.sql脚本
sqlplus / as sysdba

@utlrp.sql

--执行dbmsjdev.sql脚本(根据需要)
@dbmsjdev.sql

exec dbms_java_dev.disable

--执行ojvm脚本需要停库,一个节点操作
cd /u01/soft/31668908/files/sqlpatch/31668908/
sqlplus / as sysdba

SQL> alter system set cluster_database=false scope=spfile;

srvctl stop database -d orcl

sqlplus / as sysdba

SQL> STARTUP UPGRADE
SQL> @postinstall.sql
SQL> alter system set cluster_database=true scope=spfile;
SQL> SHUTDOWN

srvctl start database -d orcl

cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
SQL> @utlrp.sql



5.启动主库重新开启日志传送到备库

show parameter log_archive_dest_2
show parameter log_archive_dest_state_2

alter system set log_archive_dest_state_2=enable scope=both sid='*';

6.ADG备库开启同步进程

alter database recover managed standby database using current logfile disconnect from session;



*********************************************************************************************************************************************************************
在主库进行升级时候,备库不能开启实时查询alert日志报错

ORA-10485: Real-Time Query cannot be enabled while applying migration redo.

The Real-Time Query feature was enabled when an attempt was made to recover through migration redo generated during primary upgrades or downgrades

解决方案

-- 1. 停止备库恢复进程
alter database recover managed standby database disconnect ;

-- 2. 停库,并启动节点1到mount
srvctl stop database -d orcldg

启动到节点1到mount
sqlplus / as sysdba
startup mount;

-- 3. 在主库可以切换日志,并等待所有重做应用到备库

alter database recover managed standby database disconnect from session;

-- 4. 在备库开启实时应用
alter database recover managed standby database cancel;
alter database open;
alter database recover managed standby database using current logfile disconnect from session;
节点2启动:
startup
*********************************************************************************************************************************************************************



7.检查补丁应用情况

$ORACLE_HOME/OPatch/opatch lspatches

$ORACLE_HOME/OPatch/opatch lsinventory



sqlplus / as sysdba

set lines 300 pages 300
col comments for a35
col action_time for a30
col action for a15
col version for a25
col bundle_series for a15
select action_time,action,version,id,bundle_series,comments from dba_registry_history;


--检查adg同步状态
set lines 200 pages 200

select to_char(SYSDATE,'yyyymmdd hh24:mi:ss') CTIME,NAME,VALUE,DATUM_TIME from V$DATAGUARD_STATS WHERE NAME LIKE '%lag';


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论