はじめに
Oracle Exadata Database Service on Exascale Infrastructure(ExaDB-XS)で、Oracle Data Guardの自動フェイルオーバー機能が利用できるようになりました。
Oracle Data Guardは、プライマリ・データベースで発生した変更履歴(Redo)をスタンバイ・データベースへ転送・適用し、障害に備える仕組みです。Automatic Failoverを有効にすると、OCI管理のObserverがプライマリとスタンバイを監視し、障害条件を満たした場合に、Data GuardのFast-Start Failoverによってスタンバイを自動昇格させます。
通常時はPからSへRedoが転送されます。Pが利用不可と判断されると、ObserverがFSFOを通じてSを新しいプライマリへ昇格させます。
本記事では、既存のData Guard GroupにAutomatic Failoverを有効化し、DGMGRLで設定状態を確認するところまでを記録します。実際の障害模擬と自動昇格の検証は、次の記事で扱います。
本記事の構成は
Maximum Performance / ASYNCです。非同期転送はプライマリ性能への影響を抑えやすい一方、障害時に未転送のRedoがある場合はデータ損失の可能性があります。
今回の構成
| 項目 | 内容 |
|---|---|
| サービス | Oracle Exadata Database Service on Exascale Infrastructure(ExaDB-XS) |
| Data Guardリソース | Data Guard Group |
| データベース・バージョン | Oracle AI Database 26ai 23.26.3.0.0 |
| プライマリ | P(Oracle RAC、2インスタンス) |
| スタンバイ | S(Physical Standby、Oracle RAC、2インスタンス) |
| 保護モード | Maximum Performance |
| Redo転送方式 | ASYNC |
Physical Standbyは、プライマリの物理コピーを維持するスタンバイ・データベースです。今回はPとSのどちらもOracle RAC構成で、各2インスタンスが稼働しています。
有効化前の確認
Automatic Failoverを有効にする前に、Data Guardが正常に同期していることを確認します。Redo転送や適用にエラーがある状態では、後続のフェイルオーバー試験の結果を正しく判断しにくくなるためです。
データベース・ノードへoracleユーザーでログインし、対象データベースの環境変数を読み込んでから、Data Guard Brokerの管理ツールであるDGMGRLを起動します。
. Primary.env
dgmgrl /
次に、Broker構成、各データベースの状態、フェイルオーバー準備状況を確認します。
show configuration verbose;
show database verbose P;
show database verbose S;
validate database verbose P;
validate database verbose S;
show fast_start failover;
今回、有効化前に確認できた主な状態は以下のとおりです。
- Broker Configuration Status:
SUCCESS - Pは
PRIMARY - Sは
PHYSICAL STANDBY - SのRedo Applyは
Running - Apply Lag:
0 seconds - Transport Lag:
0 seconds Ready for Failover: Yes (Primary Running)- Flashback Database: P / Sともに
On - FSFO:
Disabled
特にvalidate database verbose S;で、スタンバイSがフェイルオーバー可能な状態であること、Redo Applyが実行中であること、転送遅延と適用遅延が許容範囲であることを確認します。
OCIコンソールでAutomatic Failoverを有効化する
今回は、すでに作成済みのData Guard Groupを対象にしました。
- OCIコンソールで Oracle Exadata Database Service on Exascale Infrastructure を開く
- 対象のExadata VM Clusterを開く
- プライマリ・データベース P を選択する
- Data Guard Group タブを開く
- スタンバイ S をフェイルオーバー・ターゲットとして設定する
- Automatic Failover を有効化する
- 最大データ損失しきい値を選択して保存する
フェイルオーバー・ターゲットは、プライマリ障害時に自動昇格の候補となるスタンバイです。複数スタンバイの構成では優先順位を設定できますが、今回はSを唯一のターゲットとしました。
今回選択した設定は以下です。
| 設定項目 | 値 |
|---|---|
| Automatic Failover | 有効 |
| Failover Target | S |
| Maximum data loss threshold | Custom threshold |
| Protection Mode | Maximum Performance |
| Redo Transport Type | Asynchronous |
最大データ損失しきい値には、主に次の選択肢があります。
-
0 seconds
Maximum Availabilityと同期(SYNC)転送を使用します。コミット済みトランザクションを保護するゼロデータロス構成ですが、ネットワーク遅延が性能に影響する場合があります。 -
Custom threshold
Maximum Performanceと非同期(ASYNC)転送を使用します。性能への影響を抑えやすい一方、障害時には未転送Redoの範囲でデータ損失が発生する可能性があります。
Oracle公式ドキュメントでは、Automatic Failover有効時、プライマリ・データベースが利用不可になるとOracleがスタンバイへのフェイルオーバーを自動的に開始すると説明されています。また、フェイルオーバー・ターゲットにはプライマリと同一リージョンのスタンバイを使用することが推奨されています。
Oracle Exadata Database Service on Exascale InfrastructureでのOracle Data Guardの使用
有効化後の確認
OCIコンソールで設定した後、DGMGRLでFSFO、Observer、フェイルオーバー・ターゲットを確認します。
show configuration verbose;
show fast_start failover;
show observer;
show database verbose P;
show database verbose S;
validate database verbose S;
今回の出力では、以下を確認できました。
Fast-Start Failover: Enabled in Potential Data Loss Mode
Lag Limit: 30 seconds
Lag Type: transport
Threshold: 30 seconds
Active Target: S
Potential Targets: "S"
S valid
Observer: primary-5k524-1787101929052
Shutdown Primary: TRUE
Auto-reinstate: TRUE
Lag Grace Time: 6 seconds
Enabled in Potential Data Loss Modeは、今回の構成がMaximum Performance / ASYNCであることを示す表示です。設定エラーではありません。
| 確認項目 | 期待する状態 |
|---|---|
| Configuration Status | SUCCESS |
| Fast-Start Failover | Enabled |
| Active Target | S |
| Potential Targets | Sがvalid
|
| Observer | Masterとして表示される |
| SのApply State | Running |
| Apply / Transport Lag | 許容範囲内 |
| Ready for Failover | Yes |
Auto-reinstate: TRUEは、フェイルオーバー後に旧プライマリをスタンバイへ戻す自動復旧を有効にする設定です。ただし、フェイルオーバーが成功することと、旧プライマリへのRedo適用まで完了してBroker構成が完全に正常収束することは別々に確認する必要があります。
有効化前後の差分
| 項目 | 有効化前 | 有効化後 |
|---|---|---|
| FSFO | Disabled | Enabled in Potential Data Loss Mode |
| Active Target | なし | S |
| Observer | なし | OCI管理Observer |
| Lag Type | APPLY | transport |
| Lag Grace Time | 0秒 | 6秒 |
| Auto-reinstate | TRUE | TRUE |
| Shutdown Primary | TRUE | TRUE |
まとめ
ExaDB-XSのAutomatic Failoverは、Data Guardの監視とフェイルオーバーのオーケストレーションをOCIが担う新機能です。
- Data Guardの同期状態とFailover Readinessを確認してから有効化した
- OCIコンソールでSをフェイルオーバー・ターゲットとして設定した
- 有効化後、DGMGRLでFSFO、Observer、ターゲットの状態を確認した
-
Maximum Performance / ASYNCではEnabled in Potential Data Loss Modeと表示される - ゼロデータロスを要件とする場合は、Maximum Availabilityと同期転送を前提に設計する必要がある
次回は、プライマリPのRAC全インスタンスを停止して障害を模擬し、手動のFAILOVER TOを実行せずにSが自動昇格するかを検証します。

