Skip to main content
NetApp database solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

完成 Google Cloud NetApp Volumes 上 Data Guard 的备用数据库

贡献者 netapp-jsnyder

通过创建备用重做日志文件、启用闪回数据库、激活重做传送和验证 Data Guard 状态,最终完成 Google Cloud NetApp Volumes 上 Oracle Data Guard 备用数据库的配置。

特定于层级: 此过程仅适用于 Prod HA (Data Guard + FSFO) 层级。

步骤 1:创建备用重做日志文件

在两个数据库主机上创建备用重做日志文件,以支持 Fast-Start Failover。大小必须大于或等于最大的主在线重做日志,且计数应等于(每个线程的在线组数)+ 1。完成 GCNV 播种后,在备用数据库上删除并重新创建备用重做日志,以修复复制的路径。

  1. 在主数据库上创建备用重做日志文件(orcl):

    ALTER SYSTEM SET db_create_file_dest='+DATA' SCOPE=BOTH;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+DATA') SIZE 1024M;
    -- repeat (online log groups + 1) times
  2. 在 GCNV 播种后,在备用数据库上删除并重新创建备用重做日志文件 (orcls)。在 +DATA/ORCL/… 下的复制路径会导致 ORA-19527 / ORA-16086,直到重建为止:

    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    ALTER SYSTEM SET standby_file_management=MANUAL SCOPE=BOTH;
    -- DROP STANDBY LOGFILE GROUP for each group# in v$standby_log;
    ALTER SYSTEM SET db_create_file_dest='+DATA' SCOPE=BOTH;
    ALTER SYSTEM SET standby_file_management=AUTO SCOPE=BOTH;
    ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 ('+DATA') SIZE 1024M;
    -- repeat (online groups + 1) times; one member per group
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

步骤 2:启用闪回并开始恢复

在备用数据库上启用闪回数据库,以支持故障转移后的自动恢复,然后使用实时应用启动托管恢复。必须在启动托管恢复之前启用闪回,因为在 MRP 处于活动状态时无法启用闪回。

  1. 关闭备用数据库,在 MOUNT 模式下重新启动,并在以下位置启用闪回数据库 oracdb2

    # On oracdb2
    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcls
    sqlplus / as sysdba <<SQL
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER SYSTEM SET db_flashback_retention_target=1440 SCOPE=BOTH;
    ALTER DATABASE FLASHBACK ON;
    EXIT
    SQL'
  2. 使用实时应用启动托管恢复:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcls
    sqlplus / as sysdba <<SQL
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
    EXIT
    SQL'

    USING CURRENT LOGFILE 启用实时应用(重做在到达 SRL 时应用)。

步骤 3:启用 redo shipping

通过激活 LOG_ARCHIVE_DEST_STATE_2 启用从主库到备库的 redo 传输,该参数在备库初始化步骤的 第 2 步 中被刻意设置为 DEFER,以抑制备库创建过程中的 ORA-12154 错误。

  1. 切换 `LOG_ARCHIVE_DEST_STATE_2`到 `ENABLE`并强制日志切换以启动重做日志传送:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    sqlplus / as sysdba <<SQL
    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
    ALTER SYSTEM SWITCH LOGFILE;
    ALTER SYSTEM ARCHIVE LOG CURRENT;
    EXIT
    SQL'
  2. 验证 redo shipping 是否正常工作:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    sqlplus / as sysdba <<SQL
    SELECT dest_id, status, error FROM v\$archive_dest_status WHERE dest_id IN (1,2);
    EXIT
    SQL'
    # Expected: dest_id=2, STATUS=VALID, ERROR null.

    如果 dest_2`显示 `ORA-12154,则弹跳主节点。在步骤 1:在两个数据库上启用 broker之后,通过 DGMGRL 管理传输。

步骤 4:验证 Data Guard 状态

验证主数据库是否处于 READ WRITE 模式,以及备用数据库是否已通过应用重做日志的托管恢复进行挂载。

  1. 验证主数据库角色和打开模式(位于 oracdb1):

    sudo -u oracle sqlplus -s / as sysdba \
      <<<"SELECT database_role || ' | ' || open_mode FROM v\$database;"
    # Expected: PRIMARY | READ WRITE
  2. 验证备用数据库角色、打开模式和托管恢复状态(位于 oracdb2):

    gcloud compute ssh oracdb2 --tunnel-through-iap --zone=us-west1-b
    
    sudo -u oracle bash <<'BASH'
    . ~/.bash_profile
    export ORACLE_SID=orcls
    
    sqlplus -s / as sysdba <<'SQL'
    SELECT database_role || ' | ' || open_mode
    FROM v$database;
    
    SELECT process, status, sequence#
    FROM v$managed_standby
    WHERE process IN ('MRP0','RFS');
    
    EXIT
    SQL
    BASH

    待机时应为: PHYSICAL STANDBY | MOUNTED; MRP0 with APPLYING_LOG

  3. 如果备用节点报告 `MOUNTED`但 apply 未运行,请在 `oracdb2`上重新启动托管恢复:

    sudo -u oracle bash -c '
    . ~/.bash_profile
    export ORACLE_SID=orcls
    sqlplus / as sysdba <<SQL
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
    ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
    EXIT
    SQL'

下一步是什么?

要激活自动角色管理和故障转移保护,请继续 配置 Oracle Data Guard Broker、快速启动故障转移和 Observer