在 Google Cloud Compute Engine 上设置 Data Guard 观测器

根据您的高可用性要求,您可能需要自动在数据库之间执行故障切换。验证 Data Guard 部署后,您便可以选择在 Compute Engine 上设置 Data Guard 观测器来执行此操作。观测器是一个用于监控 Data Guard 配置以便在条件允许时启动自动故障切换的进程。

本指南介绍如何在观测器虚拟机 (VM) 上安装 Oracle 19c 数据库客户端,以及如何配置快速启动故障切换。

本指南中使用了以下示例:

数据库唯一名称 服务器主机名 RAC 实例名称 角色
DBDG_SITE1 site1db2site1db1 DBDG_SITE12DBDG_SITE11 主要
DBDG_SITE2 site2db2site2db1 DBDG_SITE22DBDG_SITE21 备用实例

安装 Oracle 数据库客户端软件

  1. 在 Compute Engine 上创建满足以下条件的虚拟机 (VM)

    • 操作系统。Red Hat Enterprise Linux 7。

    • 网络。具有一个子网并且该子网的防火墙规则允许从 Virtual Private Cloud 访问运行主数据库和备用数据库的裸金属解决方案主机。

    • 存储空间。-- 至少为启动磁盘分配 20 GB 存储空间。

  2. 登录虚拟机并验证每个数据库集群的 SCAN 主机名是否均通过 DNS 进行了解析:

    host DBDG_SITE1_SCAN_HOSTNAME
    host DBDG_SITE2_SCAN_HOSTNAME
    

    如果主机名尚未解析,请将每个 SCAN 主机名的 IP 地址添加到虚拟机上的 /etc/hosts 文件中。将示例 IP 地址替换为每个集群的 IP 地址:

    # Site 1 SCAN Hosts
    192.0.2.10 DBDG_SITE1_SCAN_HOSTNAME
    192.0.2.11 DBDG_SITE1_SCAN_HOSTNAME
    192.0.2.12 DBDG_SITE1_SCAN_HOSTNAME
    
    # Site 2 SCAN Hosts
    198.51.100.10 DBDG_SITE2_SCAN_HOSTNAME
    198.51.100.11 DBDG_SITE2_SCAN_HOSTNAME
    198.51.100.12 DBDG_SITE2_SCAN_HOSTNAME
    
  3. 安装 Oracle 数据库 RPM。请仅安装软件。无需在观测器虚拟机上配置数据库。

  4. Oracle 数据库 RPM 会在预定义目录中安装软件。将以下条目添加到 /home/oracle/.bash_profile 以将 Oracle 软件主目录添加到路径:

    cat >> /home/oracle/.bash_profile << EOL
    export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
    export PATH=\$PATH:\$ORACLE_HOME/bin
    EOL
    
  5. 在终端会话中获取 Oracle 环境变量:

    source ~/.bash_profile
    

配置数据库连接

  1. $ORACLE_HOME/network/admin/tsnames.ora 文件中配置 Oracle 网络设置:

    DBDG_SITE1 =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
          (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = DBDG_SITE1) (UR=A)
          )
      )
    
    DBDG_SITE2 =
      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
          (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = DBDG_SITE2) (UR=A)
          )
      )
    
  2. Oracle 数据库 12.2 版及更高版本支持在后台模式下运行观测器。为此,必须创建一个钱包,以向数据库进行无密码身份验证。以 Oracle 用户身份登录到观测器虚拟机,然后执行以下任务以创建钱包:

    1. 将以下条目添加到 $ORACLE_HOME/network/admin/sqlnet.ora

      WALLET_LOCATION =
         (SOURCE =
            (METHOD = FILE)
            (METHOD_DATA = (DIRECTORY = /home/oracle/wallet))
      )
      SQLNET.WALLET_OVERRIDE = TRUE
      
    2. 在托管观测器的虚拟机上创建钱包目录:

      mkdir /home/oracle/wallet
      
    3. 初始化钱包,然后在出现提示时提供钱包的密码:

      mkstore -wrl /home/oracle/wallet -create
      
    4. 在钱包中为 Data Guard 配置中的每个数据库创建一个条目。mkstore 命令将依次请求数据库的 SYS 密码和上一步中提供的钱包密码:

      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys
      mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
      
    5. 确认钱包是否包含 Data Guard 配置中每个数据库的凭据。mkstore-listCredential 参数将请求钱包密码:

      mkstore -wrl /home/oracle/wallet -listCredential
      
  3. 以 Oracle 用户身份登录到观测器虚拟机,然后测试与主数据库和备用数据库的连接。使用钱包凭据通过 SQL*Plus 连接到主数据库和辅助数据库:

    sqlplus /@DBDG_SITE1 as sysdba
    sqlplus /@DBDG_SITE2 as sysdba
    

    如果钱包配置成功,sqlplus 命令会直接登录到数据库,而不会要求您提供密码。

配置并启用快速启动故障切换

  1. 创建用于存储观测器配置和日志文件的目录:

    mkdir /home/oracle/fsfo
    
  2. 使用钱包连接到主数据库上的 Data Guard 代理:

    dgmgrl
    CONNECT /@DBDG_SITE1;
    
  3. 查看 Data Guard 状态以检查配置是否标记为 SUCCESS

    SHOW CONFIGURATION;
    
  4. 启用快速启动故障切换 (FSFO):

    ENABLE FAST_START FAILOVER;
    

    启用 FSFO 并不会使配置准备好进行自动故障切换。自动故障切换需要使用观测器。

  5. 启动 Data Guard 观测器:

    START OBSERVER observer1 IN BACKGROUND FILE IS '/home/oracle/fsfo/observer1_DBDG.dat' LOGFILE IS '/home/oracle/fsfo/observer1_DBDG.log';
    
  6. 在单独的终端会话中,验证配置:

    SHOW CONFIGURATION VERBOSE;
    

    以下示例展示了 show configuration 命令的详细模式。如果配置状态为 SUCCESS,则表示设置已完成。

    Configuration - DBDG
    
      Protection Mode: MaxAvailability
      Members:
     DBDG_SITE1 - Primary database
       DBDG_SITE2 - Physical standby database
    
      (*) Fast-Start Failover target
    
      Properties:
        FastStartFailoverThreshold      = '30'
        OperationTimeout                = '30'
        TraceLevel                      = 'USER'
        FastStartFailoverLagLimit       = '45'
        CommunicationTimeout            = '180'
        ObserverReconnect               = '0'
        FastStartFailoverAutoReinstate  = 'TRUE'
        FastStartFailoverPmyShutdown    = 'TRUE'
        BystandersFollowRoleChange      = 'ALL'
        ObserverOverride                = 'FALSE'
        ExternalDestination1            = ''
        ExternalDestination2            = ''
        PrimaryLostWriteAction          = 'CONTINUE'
        ConfigurationWideServiceName    = 'DBDG_CFG'
    
    Fast-Start Failover: Enabled in Potential Data Loss Mode
      Lag Limit:          45 seconds
      Threshold:          30 seconds
      Active Target:      DBDG_SITE2
      Potential Targets:  "DBDG_SITE2"
        DBDG_SITE2   valid
      Observer:           observer1
      Shutdown Primary:   TRUE
      Auto-reinstate:     TRUE
      Observer Reconnect: (none)
      Observer Override:  FALSE
    
    Configuration Status:
    SUCCESS