Data Guard Broker によるスイッチオーバー
Data Guard Broker 環境でスイッチオーバーを実行するには DGMGRL ユーティリティから SWITCHOVER TO 文を実行します。下記の例ではプライマリ・データベース「O19A」からスタンバイ・データベース「O19S」にスイッチオーバーしています。
DGMGRL> SWITCHOVER TO 'O19S'
現在スイッチオーバーを実行しています。お待ちください...
操作にはデータベース"O19S"への接続が必要です
接続中...
"O19S"に接続しました
SYSDBAとして接続しました。
新しいプライマリ・データベース"O19S"がオープン中です...
Oracle Clusterwareはデータベース"O19A"を再起動しています...
[W000 2025-04-21T20:53:27.122+09:00] Failed to attach to o19a.
<<途中省略>>
[W000 2025-04-21T20:53:43.148+09:00] Failed to attach to o19a.
"O19A"に接続しました
"O19A"に接続しました
スイッチオーバーに成功しました。新しいプライマリは"O19S"です
DGMGRL>
Data Guard と Grid Infrastucture の関係
データベースが Oracle Grid Infrastructure の管理下にある場合、Data Guard Broker も Oracle Grid Infrastructor を認識します。以下の例では VALIDATE DATABASE 文を実行しています。「クラスタウェアにより管理される」項目が YES になっています。
DGMGRL> VALIDATE DATABASE O19A
データベース・ロール: プライマリ・データベース
スイッチオーバー可能: はい
クラスタウェアにより管理される:
O19A: YES
初期状態
Oracle Grid Infrastucture の登録状態を確認します。初期状態では以下のようになっています。
srvctl オプション | 説明 | データベース O19A | データベース O19S |
---|---|---|---|
-db | 一意データベース名 | O19A | O19S |
-role | ロール | PRIMARY | PHYSICAL_STANDBY |
-startoption | 起動オプション | open | mount |
-policy | 管理ポリシー | AUTOMATIC | AUTOMATIC |
プライマリ・データベース「O19A」の Oracle Grid Infrastructure 設定を確認します。スタンバイ・データベース「O19S」では起動オプション(Start options)は mount になっています。
$ srvctl config database -db o19a
Database unique name: O19A
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/O19A/PARAMETERFILE/spfile.269.1102456437
Password file: +DATA/O19A/PASSWORD/orapwo19a
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA,REDO1,REDO2
Services: srv01
OSDBA group:
OSOPER group:
Database instance: O19A
$ srvctl config database -db o19s
Database unique name: O19S
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile:
Password file:
Domain:
Start options: mount
Stop options: immediate
Database role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Disk Groups: DATA,REDO1,REDO2
Services:
OSDBA group:
OSOPER group:
Database instance: O19S
スイッチオーバー
スイッチオーバーを行うと Oracle Grid Indrastructure に登録されたデータベース設定のうち起動オプション(Start options)オプションとロール(Database role)オプションが変更されます。
$ srvctl config database -db o19s
Database unique name: O19S
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile:
Password file:
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA,REDO1,REDO2
Services:
OSDBA group:
OSOPER group:
Database instance: O19S
$ srvctl config database -db o19a
Database unique name: O19A
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/O19A/PARAMETERFILE/spfile.269.1102456437
Password file: +DATA/O19A/PASSWORD/orapwo19a
Domain:
Start options: mount
Stop options: immediate
Database role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Disk Groups: DATA,REDO1,REDO2
Services: srv01
OSDBA group:
OSOPER group:
Database instance: O19A
スタンバイ・インスタンスをオープン
スタンバイ・データベース・インスタンスを OPEN READ ONLY ステータスに移行します。Data Guard Broker 環境では ALTER DATABASE MANAGED STANDBY DATABASE 文を実行しなくてもスタンバイ・データベース・インスタンスを OPEN READ ONLY WITH APPLY モード(Active Data Guard)に移行できます。
SQL> ALTER DATABASE OPEN READ ONLY;
データベースが変更されました。
SQL> SELECT i.STATUS, d.OPEN_MODE FROM V$INSTANCE i, V$DATABASE d;
STATUS OPEN_MODE
------------ --------------------
OPEN READ ONLY WITH APPLY
スイッチオーバーふたたび
スタンバイ・データベースを OPEN READ ONLY に変更した状態で再びスイッチオーバーを行います。プライマリ・データベースは O19A、スタンバイ・データベースが O19S に戻ります。処理が完了したら Grid Infrastructure の設定を確認します。
DGMGRL> SWITCHOVER TO 'O19A'
現在スイッチオーバーを実行しています。お待ちください...
新しいプライマリ・データベース"O19A"がオープン中です...
Oracle Clusterwareはデータベース"O19S"を再起動しています...
[W000 2025-04-21T20:58:56.016+09:00] Failed to attach to o19s.
<<途中省略>>
[W000 2025-04-21T20:59:11.049+09:00] Failed to attach to o19s.
"O19S"に接続しました
"O19S"に接続しました
スイッチオーバーに成功しました。新しいプライマリは"O19A"です
DGMGRL> SHOW CONFIGURATION
構成 - dg1_config
保護モード: MaxPerformance
メンバー:
O19A - プライマリ・データベース
O19S - フィジカル・スタンバイ・データベース
ファスト・スタート・フェイルオーバー: Disabled
構成ステータス:
SUCCESS (ステータスは19秒前に更新されました)
$ srvctl config database -db o19a
Database unique name: O19A
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/O19A/PARAMETERFILE/spfile.269.1102456437
Password file: +DATA/O19A/PASSWORD/orapwo19a
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA,REDO1,REDO2
Services: srv01
OSDBA group:
OSOPER group:
Database instance: O19A
$ srvctl config database -db o19s
Database unique name: O19S
Database name: O19A
Oracle home: /opt/oracle/product/19.0.0/dbhome_1
Oracle user: oracle
Spfile:
Password file:
Domain:
Start options: read only ← 変わっている
Stop options: immediate
Database role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Disk Groups: DATA,REDO1,REDO2
Services:
OSDBA group:
OSOPER group:
Database instance: O19S
OPEN READ ONLY モードのスタンバイ・データベースからスイッチオーバーすると、新スタンバイ・データベースも OPEN READ ONLY モードになるように Grid Infrastructure の属性が変化することがわかります。
Author: Noriyoshi Shinoda / Date: April 22, 2025