Google Cloud Compute Engine で Data Guard オブザーバーを設定する
高可用性要件によっては、データベース間のフェイルオーバーの自動化が必要になる場合があります。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_HOSTNAME
Oracle 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