スナップショット・スタンバイとは?
スナップショット・スタンバイはフィジカル・スタンバイから変換されるデータベースです。スナップショット・スタンバイは読み書きが可能であるため、フィジカル・スタンバイ・データベースをテスト環境として使用できるようになります。プライマリ・データベースから受信した REDO ログは継続して受信しているためデータの欠損はありません。ただしスタンバイ・データベースに対する REDO 適用は止まっていますのでプライマリ・データベースの更新がスタンバイ・データベースに伝播することはありません。
本記事では Data Guard Broker からスナップショット・スタンバイを作成する方法と、元のフィジカル・スタンバイへ戻す方法について説明しています。
Data Guard Broker を使わない方法
Data Guard Broker を使用しない場合、スナップショット・スタンバイはスタンバイ・データベースに接続して以下の手順で作成します。
-- スタンバイ・データベースに対する REDO 適用の停止
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-- MOUNT 状態に移行(READ ONLY OPEN の場合)
SHUTDOWN IMMEDIATE
STARTUP MOUNT
-- スナップショット・スタンバイ・データベースへの変換
ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
-- READ/WRITE モードでオープン
ALTER DATABASE OPEN READ WRITE;
Data Guard Broker を使ったスナップショットスタンバイへの変換
DGMGRL ユーティリティから CONVERT DATABASE db_name TO SNAPSHOT STANDBY コマンドを実行するだけです。
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
------------
MOUNTED
SQL> SELECT action FROM v$dataguard_process WHERE name='PR00';
ACTION
------------
APPLYING_LOG
DGMGRL> SHOW CONFIGURATION
構成 - dg1_config
保護モード: MaxPerformance
メンバー:
O19A - プライマリ・データベース
O19S - フィジカル・スタンバイ・データベース
ファスト・スタート・フェイルオーバー: Disabled
構成ステータス:
SUCCESS (ステータスは59秒前に更新されました)
この状態からスタンバイ・データベースをスナップショット・スタンバイに変換します。CONVERT コマンドはすぐに終了し、SHOW CONFIGURATION コマンドを確認すると、スタンバイ・データベースの状態が「スナップショット・スタンバイ・データベース」に変換されていることがわかります。
DGMGRL> CONVERT DATABASE O19S TO SNAPSHOT STANDBY
データベース"o19s"をスナップショット・スタンバイ・データベースに変換中 です。お待ちください...
データベース"o19s"は正常に変換されました
DGMGRL> SHOW CONFIGURATION
構成 - dg1_config
保護モード: MaxPerformance
メンバー:
O19A - プライマリ・データベース
O19S - スナップショット・スタンバイ・データベース
ファスト・スタート・フェイルオーバー: Disabled
構成ステータス:
SUCCESS (ステータスは56秒前に更新されました)
スタンバイ・インスタンスの状態を確認します。読み書きできる状態(READ WRITE)であり、インスタンスもオープンしていることがわかります。
SQL> SELECT action FROM v$dataguard_process WHERE name='PR00';
レコードが選択されませんでした。
SQL> SELECT status, open_mode FROM v$instance, v$database;
STATUS OPEN_MODE
------------ --------------------
OPEN READ WRITE
スナップショット・スタンバイを元に戻す
スナップショット・スタンバイは一時的に読み書きできる状態になっているだけなので、フィジカル・スタンバイに戻します。Data Guard Broker を使わない場合は以下の手順で実行します。
-- データベース・インスタンスの停止
SHUTDOWN IMMEDIATE
-- MOUNT モードでオープン
STARTUP MOUNT
-- フィジカル・スタンバイへの変換
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
Data Guard Broker では上記の作業を CONVERT 文のみで実行することができます。
DGMGRL> CONVERT DATABASE O19S TO PHYSICAL STANDBY
データベース"o19s"をフィジカル・スタンバイ・データベースに変換中です。 お待ちください...
Oracle Clusterwareはデータベース"O19S"を再起動しています...
[W000 2025-05-14T09:50:04.332+09:00] Failed to attach to o19s.
[W000 2025-05-14T09:50:05.338+09:00] Failed to attach to o19s.
... 省略 ...
[W000 2025-05-14T09:50:29.407+09:00] Failed to attach to o19s.
[W000 2025-05-14T09:50:30.410+09:00] Failed to attach to o19s.
"O19S"に接続しました
"O19S"に接続しました
データベース"o19s"の変換を続行します...
データベース"o19s"は正常に変換されました
CONVERT 文が実行されると、スナップショット・スタンバイ・インスタンスが再起動されます。一時的にインスタンスとの通信が切れるため、毎秒エラーメッセージが出力されます。その後スナップショット・スタンバイ・データベースがフィジカル・スタンバイ・データベースに変換されます。
DGMGRL> SHOW CONFIGURATION
構成 - dg1_config
保護モード: MaxPerformance
メンバー:
O19A - プライマリ・データベース
O19S - フィジカル・スタンバイ・データベース
ファスト・スタート・フェイルオーバー: Disabled
構成ステータス:
SUCCESS (ステータスは40秒前に更新されました)
スタンバイ・データベースに接続すると、インスタンスが MOUNT モードで起動し、REDO 適用が行われていることがわかります。
SQL> SELECT status FROM v$instance;
STATUS
------------
MOUNTED
SQL> SELECT action FROM v$dataguard_process WHERE name='PR00';
ACTION
------------
APPLYING_LOG
Author: Noriyoshi Shinoda / Date: May 14, 2025