当前位置 博文首页 > LuciferLiu_DBA:ADG环境如何打PSU补丁?

    LuciferLiu_DBA:ADG环境如何打PSU补丁?

    作者:[db:作者] 时间:2021-06-15 18:09

    一、前言

    随着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)?? ?

    环境准备:

    ?主机名ipDB Versiondb_namedb_unique_name
    主库orcl192.168.56.12011.2.0.4orclorcl
    备库orcl_stby192.168.56.12111.2.0.4orclorcl_stby

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

    二、流程

    主要步骤如下:

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

    详细操作步骤如下:

    1.主库停止日志传输。

    ##如果已配置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.关闭备库实例,监听

    ##Non-rac
    shutdown immediate
    lsnrctl stop
     
    ##rac
    srvctl stop database -d orcl
    srvctl stop listener
    srvctl stop scan_listner

    b.替换OPatch

    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操作)

    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

    ##已配置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)?? ?

    --执行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.开启日志传输

    edit database orcl set state='ONLINE';

    5.备库开启日志应用。

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

    ##已配置DG Broker,打开apply-on
    edit database orcl_stby set state='ONLINE';
    
    ##备库开启到read only,开启ADG
    alter database open;


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

    主库:

    opatch lspatches
    select action_time,action,version,id,bundle_series,comments from dba_registry_history;

    备库:

    opatch lspatches
    select action_time,action,version,id,bundle_series,comments from dba_registry_history;

    检查ADG同步情况:

    ##已配置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正常同步。