首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ADG环境如何打PSU补丁?

ADG环境如何打PSU补丁?

作者头像
Lucifer三思而后行
发布2021-08-17 14:52:08
发布2021-08-17 14:52:08
7610
举报

一、前言

随着Oracle ADG技术的逐渐成熟,大多数数据库环境都使用ADG作为灾备和报表数据库,可以说是标配。

那么如果主数据库由于BUG或者维护,需要更新补丁,该如何去操作呢?

本文参考MOS文档:How do you apply a Patchset,PSU or CPU in a Data Guard Physical Standby configuration (Doc ID 278641.1)    

环境准备:

主机名

ip

DB Version

db_name

db_unique_name

主库

orcl

192.168.56.120

11.2.0.4

orcl

orcl

备库

orcl_stby

192.168.56.121

11.2.0.4

orcl

orcl_stby

Notes:ADG环境已提前搭建好,并已配置好 DG Broker。

二、流程

主要步骤如下:

代码语言:javascript
复制
1.主库停止日志传输。
2.关闭备库,备库应用补丁程序,备库启动mount,不开启日志应用。
3.关闭主库,主库应用补丁程序。
4.开启主库,开启日志传输。
5.备库开启日志应用。
6.执行检查,确保补丁安装成功。

详细操作步骤如下:

1.主库停止日志传输。

代码语言:javascript
复制
##如果已配置DG Broker
dgmgrl sys/oracle@orcl
edit database orcl set state='LOG-TRANSPORT-OFF';


##未配置DG Broker
SQL> alter system set log_archive_dest_state_2=defer scope=both sid='*';

2.关闭备库,备库应用补丁程序,备库启动mount,不开启日志应用。

a.关闭备库实例,监听

代码语言:javascript
复制
##Non-rac
shutdown immediate
lsnrctl stop
 
##rac
srvctl stop database -d orcl
srvctl stop listener
srvctl stop scan_listner

b.替换OPatch

代码语言:javascript
复制
cd /u01/app/oracle/product/11.2.0/db/
mv OPatch/ OPatch0421
unzip -q /soft/p6880880_112000_Linux-x86-64.zip
opatch version

c.应用补丁程序(根据Readme操作)

代码语言:javascript
复制
unzip -q p31537677_112040_Linux-x86-64.zip
cd 31537677 
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
opatch apply

如果opatch apply遇到warning,请参照:11204打PSU时Warning:ins_emagent.mk nmosudo

d.开启备库到mount

代码语言:javascript
复制
##已配置DG Broker,需要设置APPLY-OFF防止自动开启日志应用
edit database orcl_stby set state='APPLY-OFF';

##Non-rac
startup mount
lsnrctl start

##rac
srvctl start database -d orcl -o mount
srvctl start listener
srvctl start scan_listener

3.关闭主库,主库应用补丁程序。

可参照备库补丁应用过程,此处略过。

4.开启主库,开启日志传输。

a.开启主库,开启监听

b.执行PSU升级脚本

关于catbundle脚本可参考:Introduction To Oracle Database catbundle.sql (Doc ID 605795.1)    

代码语言:javascript
复制
--执行catbundle脚本
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
@catbundle.sql psu apply

--编译无效对象
@utlrp.sql

--执行dbms_java_dev脚本
@dbmsjdev.sql
exec dbms_java_dev.disable

c.开启日志传输

代码语言:javascript
复制
edit database orcl set state='ONLINE';

5.备库开启日志应用。

这将使通过catupgrade/catbundle/catcpu脚本对数据库的改变被应用到备库。

代码语言:javascript
复制
##已配置DG Broker,打开apply-on
edit database orcl_stby set state='ONLINE';

##备库开启到read only,开启ADG
alter database open;

6.执行检查,确保补丁安装成功。

主库:

代码语言:javascript
复制
opatch lspatches
select action_time,action,version,id,bundle_series,comments from dba_registry_history;

备库:

代码语言:javascript
复制
opatch lspatches
select action_time,action,version,id,bundle_series,comments from dba_registry_history;

检查ADG同步情况:

代码语言:javascript
复制
##已配置DG Broker
show database orcl
show database orcl_stby

##未配置DG Broker
select process,group#,thread#,sequence# from v$managed_standby;
select group#,thread#,sequence#,bytes/1024/1024,archived,status from v$standby_log;

主库删除test表一个记录:

备库查看是否同步:

备库已实时删除,ADG正常同步。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、流程
    • 1.主库停止日志传输。
      • a.关闭备库实例,监听
      • b.替换OPatch
      • c.应用补丁程序(根据Readme操作)
    • d.开启备库到mount
    • 3.关闭主库,主库应用补丁程序。
      • 可参照备库补丁应用过程,此处略过。
      • a.开启主库,开启监听
      • b.执行PSU升级脚本
      • c.开启日志传输
    • 5.备库开启日志应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档