
はじめに
みなさん、こんにちは。
Oracle Cloud Infrastructure 検証チームです。
前回は[BaseDBのData Guardについて(構成編)]にて、
Oracle Base Database Service(BaseDB)のData Guardの構成方法をご紹介しました。
今回は、構成したData Guardを使用して、
スイッチオーバー操作とフェイルオーバー操作の検証してみましたので、検証した内容をご紹介したいと思います。
スイッチ・オーバーとフェイル・オーバー
Data Guardでは、スイッチオーバーまたはフェイルオーバーを実施することで、
プライマリDBとスタンバイDBの役割(ロール)を変更することができます。
スイッチオーバー
スイッチオーバーは、主に計画停止やメンテナンス時に実施します。
スイッチオーバーを実行すると、プライマリDBとスタンバイDBの役割(ロール)を切り替えることができます。
スイッチオーバー実施時は、スタンバイDBへ更新履歴の転送・適用をしきった状態で、役割(ロール)を切り替える為、データの損失は発生しません。
フェイルオーバー
フェイルオーバーは、主にプライマリDBの障害発生時に実施します。
フェイルオーバーを実行すると、スタンバイDBがプライマリ・ロールへ移行され、新しいプライマリDBとして動作します。
フェイルオーバー実施後は、スタンバイDBが存在しない状態になる為、
Data Guardによる同期を再開するには、障害が発生した古いプライマリDBを新しいスタンバイDBとして復旧する必要があります。
フェイルオーバーでは、最大パフォーマンス保護モード(非同期モード)を使用している場合、データの損失が発生する可能性があります。
スイッチオーバーの検証
それでは、スイッチオーバーから検証していきます。
- プライマリDBへSSH接続し、Data Guardコマンドライン・インタフェース(DGMGRL)を起動します。
[oracle@db01 ~]$ dgmgrl / DGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Apr 4 11:06:02 2025 Version 19.26.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "cdborcl_vj4_nrt" Connected as SYSDG. DGMGRL>
- スイッチオーバー実行前の役割(ロール)とステータスを確認してみます。
※役割(ロール)とステータス確認には[show database <DB_UNIQUE_NAME>]コマンドを使用しています。DGMGRL> show database cdborcl_vj4_nrt Database - cdborcl_vj4_nrt Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): cdborcl Database Status: SUCCESS DGMGRL> DGMGRL> show database cdborcl_xm2_nrt Database - cdborcl_xm2_nrt Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 0 seconds (computed 1 second ago) Average Apply Rate: 61.00 KByte/s Real Time Query: OFF Instance(s): cdborcl Database Status: SUCCESS DGMGRL>
各DBの役割(ロール)とDatabase Statusが[SUCCESS]となっていることが確認できます。
- スイッチオーバーを実施する為、OCIコンソールのナビゲーション・メニューより、以下の順で画面を遷移していきます。
[Oracle Database] – [Oracleベース・データベース・サービス] – [<プライマリDBのDBシステム名>] – [<データベース名>] – [Data Guardアソシエーション] - Data Guardアソシエーション欄のメニューから[スイッチオーバー]を選択します。
- データベース管理パスワードを入力して、[OK]をクリックします。
- 作業リクエストから、最新の[Switchover Data Guard]が[成功]していることを確認します。
- 新プライマリDBへSSH接続し、Data Guardコマンドライン・インタフェース(DGMGRL)を起動します。
[oracle@db02 ~]$ dgmgrl / DGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Apr 4 11:12:58 2025 Version 19.26.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "cdborcl_xm2_nrt" Connected as SYSDG. DGMGRL>
- スイッチオーバー後の役割(ロール)とステータスを確認してみます。
※役割(ロール)とステータス確認には[show database <DB_UNIQUE_NAME>]コマンドを使用しています。DGMGRL> show database cdborcl_vj4_nrt Database - cdborcl_vj4_nrt Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 0 seconds ago) Apply Lag: 0 seconds (computed 0 seconds ago) Average Apply Rate: 1.96 MByte/s Real Time Query: OFF Instance(s): cdborcl Database Status: SUCCESS DGMGRL> DGMGRL> show database cdborcl_xm2_nrt Database - cdborcl_xm2_nrt Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): cdborcl Database Status: SUCCESS DGMGRL>
スイッチオーバー前後で役割(ロール)が切り替わっていて、Database Statusも[SUCCESS]となっていますので、問題なく、スイッチオーバーを実施することができました。
※再度同じ手順でスイッチオーバーを実施することで、役割(ロール)を元の状態に戻すことができます。
フェイルオーバーの検証
続いて、フェイルオーバーの検証をしていきます。
- フェイルオーバーを実施する為、OCIコンソールのナビゲーション・メニューより、以下の順で画面を遷移していきます。
[Oracle Database] – [Oracleベース・データベース・サービス] – [<スタンバイDBのDBシステム名>] – [<データベース名>] – [Data Guardアソシエーション] - Data Guardアソシエーション欄のメニューから[フェイルオーバー]を選択します。
- データベース管理パスワードを入力して、[OK]をクリックします。
- 作業リクエストから、最新の[Failover Data Guard]が[成功]していることを確認します。
- 新プライマリDBへSSH接続し、Data Guardコマンドライン・インタフェース(DGMGRL)を起動します。
[oracle@db02 ~]$ dgmgrl / DGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Apr 4 11:32:35 2025 Version 19.26.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "cdborcl_xm2_nrt" Connected as SYSDG. DGMGRL>
- フェイルオーバー後の役割(ロール)とステータスを確認してみます。
※役割(ロール)とステータス確認には[show database <DB_UNIQUE_NAME>]コマンドを使用しています。DGMGRL> show database cdborcl_vj4_nrt Database - cdborcl_vj4_nrt Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: (unknown) Apply Lag: (unknown) Average Apply Rate: (unknown) Real Time Query: OFF Instance(s): cdborcl Database Status: DISABLED - ORA-16661: the standby database needs to be reinstated DGMGRL> DGMGRL> show database cdborcl_xm2_nrt Database - cdborcl_xm2_nrt Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): cdborcl Database Status: SUCCESS DGMGRL>
フェイルオーバー後で役割(ロール)が切り替わっており、プライマリDB側のDatabase Statusが[SUCCESS]となっていますので、フェイルオーバーは問題なく実施できていますが、スタンバイDB側のDatabase Statusが[DISABLED]で、復旧が必要というエラーが表示されていることを確認できます。
この状態のままでは、プライマリDBとスタンバイDB間の同期ができない為、OCIコンソールから回復操作を実施して、スタンバイDBを復旧させていきます。
回復操作を実施すると、Flashback Database機能で、データベースを障害発生前までデータを戻し、
スタンバイDBとして、Data Guardへの再組み込みまでしてくれます。 - 回復操作を実施する為、OCIコンソールのナビゲーション・メニューより、以下の順で画面を遷移していきます。
[Oracle Database] – [Oracleベース・データベース・サービス] – [<プライマリDBのDBシステム名>] – [<データベース名>] – [Data Guardアソシエーション] - Data Guardアソシエーション欄のメニューから[回復]を選択します。
- データベース管理パスワードを入力して、[OK]をクリックします。
- 作業リクエストから、最新の[Reinstate Data Guard]が[成功]していることを確認します。
- 新プライマリDBへSSH接続し、Data Guardコマンドライン・インタフェース(DGMGRL)を起動します。
[oracle@db02 ~]$ dgmgrl / DGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Apr 4 11:44:30 2025 Version 19.26.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Connected to "CDBORCL_XM2_NRT" Connected as SYSDG. DGMGRL>
- 回復操作後の役割(ロール)とステータスを確認してみます。
※役割(ロール)とステータス確認には[show database <DB_UNIQUE_NAME>]コマンドを使用しています。DGMGRL> show database cdborcl_vj4_nrt Database - cdborcl_vj4_nrt Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 0 seconds ago) Apply Lag: 0 seconds (computed 0 seconds ago) Average Apply Rate: 166.00 KByte/s Real Time Query: OFF Instance(s): cdborcl Database Status: SUCCESS DGMGRL> DGMGRL> show database cdborcl_xm2_nrt Database - cdborcl_xm2_nrt Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): cdborcl Database Status: SUCCESS DGMGRL>
回復操作実施後、スタンバイDB側のDatabase Statusが[DISABLED]から[SUCCESS]へ変更されています。
エラー表示もなくなり、プライマリDBとスタンバイDB間での同期が再開されています。フェイルオーバー実施前の状態に戻す場合は、この状態でスイッチオーバーを実施し、役割(ロール)を切り替えます。
おわりに
今回は、Oracle Base Database Service(BaseDB)のData Guard操作について検証してみましたが、如何だったでしょうか。
構成の時と同様にData Guardとして必要な操作は基本的にOCIコンソールから実行できるので、非常に簡単かつ便利だと感じました。
最後までご覧頂き、ありがとうございました。
BaseDBはほかにもこんな記事があります!
BaseDB記事一覧

投稿者プロフィール
