在 Compute Engine 上設定 Data Guard 觀察器 Google Cloud

高可用性需求而定,您可能需要自動在資料庫之間進行容錯移轉。驗證 Data Guard 部署作業後,您可以選擇在 Compute Engine 上設定 Data Guard 觀察器來執行這項作業。觀察器是監控 Data Guard 設定的程序,可在條件允許時啟動自動備援。

本指南將說明如何在觀察員虛擬機器 (VM) 上安裝 Oracle 19c 資料庫用戶端,以及設定快速啟動容錯功能。

本指南中會使用以下範例:

資料庫專屬名稱 伺服器主機名稱 RAC 執行個體名稱 角色
DBDG_SITE1 site1db1site1db2 DBDG_SITE11DBDG_SITE12 主要
DBDG_SITE2 site2db1site2db2 DBDG_SITE21DBDG_SITE22 待命

安裝 Oracle Database 用戶端軟體

  1. 在 Compute Engine 上建立符合下列條件的虛擬機器 (VM)

    • 作業系統Red Hat Enterprise Linux 7。

    • 建立人脈:子網路:包含防火牆規則,可讓虛擬私有雲存取執行主要和備用資料庫的 Bare Metal 解決方案主機。

    • 儲存空間。-- 至少有 20 GB 的空間用於開機磁碟。

  2. 登入 VM,並確認每個資料庫叢集的 SCAN 主機名稱是否已在 DNS 中解析:

    host DBDG_SITE1_SCAN_HOSTNAME
    host DBDG_SITE2_SCAN_HOSTNAME
    

    如果主機名稱無法解析,請將每個 SCAN 主機名稱的 IP 位址新增至 VM 上的 /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 Database RPM。只安裝軟體。您不需要在觀察器 VM 上設定資料庫。

  4. Oracle Database 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 Net 設定:

    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 Database 12.2 以上版本支援在背景模式下執行觀察器。為此,您必須建立錢包,才能對資料庫執行無密碼驗證。以觀察 VM 上的 Oracle 使用者身分登入,並執行下列工作來建立錢包:

    1. $ORACLE_HOME/network/admin/sqlnet.ora 中新增下列項目:

      WALLET_LOCATION =
         (SOURCE =
            (METHOD = FILE)
            (METHOD_DATA = (DIRECTORY = /home/oracle/wallet))
      )
      SQLNET.WALLET_OVERRIDE = TRUE
      
    2. 在代管觀察器的 VM 上建立錢包目錄:

      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 身分登入觀察 VM,然後測試與主要和備援資料庫的連線。使用錢包憑證,透過 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 Observer:

    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