Google CloudCompute Engine で Data Guard Observer を設定する
高可用性要件によっては、データベース間のフェイルオーバーの自動化が必要になる場合があります。Data Guard デプロイを検証した後、Compute Engine 上に Data Guard オブザーバーを設定できます。オブザーバーは、Data Guard 構成をモニタリングして、条件付きで自動フェイルオーバーを開始するプロセスです。
このガイドでは、オブザーバー仮想マシン(VM)に Oracle 19c データベース クライアントをインストールする方法と、ファスト スタート フェイルオーバーの構成について説明します。
このガイド全体を通して、次の例を使用します。
| データベースの一意の名前 | サーバーのホスト名 | RAC インスタンス名 | 役割 |
|---|---|---|---|
| DBDG_SITE1 | site1db1、site1db2 | DBDG_SITE11、DBDG_SITE12 | プライマリ |
| DBDG_SITE2 | site2db1、site2db2 | DBDG_SITE21、DBDG_SITE22 | スタンバイ |
Oracle Database クライアント ソフトウェアをインストールする
Compute Engine で、次の条件を満たす仮想マシン(VM)を作成します。
オペレーティング システム。Red Hat Enterprise Linux 7 以降
ネットワーキング。プライマリ データベースとスタンバイ データベースを実行する Virtual Private Cloud ホストから Bare Metal Solution ホストへのアクセスを許可するファイアウォール ルールを設定したサブネット。
ストレージ。-- 少なくとも 20 GB が割り当てられているブートディスク
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_HOSTNAMEOracle Database RPM をインストールします。ソフトウェアのみをインストールします。オブザーバー VM でデータベースを構成する必要はありません。
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ターミナル セッションで Oracle 環境変数を取得します。
source ~/.bash_profile
データベース接続を構成する
$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) ) )Oracle データベース バージョン 12.2 以降では、オブザーバーをバックグラウンド モードで実行するためのサポートが提供されています。このサポートを利用するには、データベースでパスワードなしの認証を行うためのウォレットを作成する必要があります。オブザーバー VM で Oracle ユーザーとしてログインし、次のタスクを実行してウォレットを作成します。
次のエントリを
$ORACLE_HOME/network/admin/sqlnet.oraに追加します。WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /home/oracle/wallet)) ) SQLNET.WALLET_OVERRIDE = TRUEオブザーバーをホストする VM 上に wallet ディレクトリを作成します。
mkdir /home/oracle/walletウォレットを初期化します。プロンプトが表示されたら、ウォレットのパスワードを指定します。
mkstore -wrl /home/oracle/wallet -createウォレットで、Data Guard 構成内のデータベースごとにエントリを作成します。
mkstoreコマンドは、データベースの SYS パスワードをリクエストし、続いて前の手順で保存したウォレット パスワードをリクエストします。mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sysウォレットに Data Guard 構成の各データベースの認証情報が含まれていることを確認します。
mkstoreの-listCredential引数は、ウォレット パスワードをリクエストします。mkstore -wrl /home/oracle/wallet -listCredential
Oracle としてオブザーバー VM にログインし、プライマリ データベースとスタンバイ データベースへの接続をテストします。ウォレットの認証情報を使用して、SQL*Plus でプライマリ データベースとセカンダリ データベースに接続します。
sqlplus /@DBDG_SITE1 as sysdba sqlplus /@DBDG_SITE2 as sysdbaウォレットの構成が成功すると、
sqlplusコマンドはパスワードを要求することなくデータベースにログインします。
ファスト スタート フェイルオーバーを構成して有効にする
オブザーバーの構成とログファイルを保存するディレクトリを作成します。
mkdir /home/oracle/fsfoウォレットを使用して、プライマリ データベース上の Data Guard ブローカーに接続します。
dgmgrl CONNECT /@DBDG_SITE1;Data Guard のステータスを表示し、構成が
SUCCESSとマークされていることを確認します。SHOW CONFIGURATION;ファスト スタート フェイルオーバー(FSFO)を有効にします。
ENABLE FAST_START FAILOVER;FSFO を有効にしても、構成は自動フェイルオーバーに対応していません。自動フェイルオーバーにはオブザーバーが必要です。
Data Guard オブザーバーを起動します。
START OBSERVER observer1 IN BACKGROUND FILE IS '/home/oracle/fsfo/observer1_DBDG.dat' LOGFILE IS '/home/oracle/fsfo/observer1_DBDG.log';別のターミナル セッションで、構成を確認します。
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