Google Cloud Compute Engine で Data Guard オブザーバーを設定する

高可用性要件によっては、データベース間のフェイルオーバーの自動化が必要になる場合があります。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 以降

    • ネットワーキング。プライマリ データベースとスタンバイ データベースを実行する Virtual Private Cloud ホストから Bare Metal Solution ホストへのアクセスを許可するファイアウォール ルールを設定したサブネット。

    • ストレージ。-- 少なくとも 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 データベース バージョン 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 上に wallet ディレクトリを作成します。

      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 オブザーバーを起動します。

    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