Data Guard プロセスの確認
Oracle Data Guard が正常に実行されているかを確認する方法として、以前はスタンバイ・インスタンスで V$MANAGED_STANDBY ビューを検索していました。プロセス名 MRP0 の状況を確認し、APPLYING_LOG 状態であれば Data Guard リアルタイム適用が有効に動作していることになります。
SQL> SELECT status FROM v$managed_standby WHERE process LIKE 'MRP%';
STATUS
------------
APPLYING_LOG
しかし Oracle Database 12c (12.2) 以降、このビューを確認する方法は非推奨となっています。本記事では Oracle Database 19c で使用が推奨されている V$DATAGUARD_PROCESS ビューの内容を確認します。このビューはプライマリ・データベース、スタンバイ・データベースどちらのインスタンスにも出力があります(内容は異なります)。
本記事ではプライマリ・データベースの名前(db_unique_name)を O19P、スタンバイ・データベースの名前を O19S としています。フィジカル・スタンバイ環境で、保護モードは最大パフォーマンス、Data Guard Broker は使用していません。
SQL> SELECT * FROM V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
------------------------------ ------------------------------ ----------------- ----------- ----------
O19S O19P PHYSICAL STANDBY 3.8160E+13 0
O19P NONE PRIMARY DATABASE 0 0
このビューをスタンバイ・データベースで検索するとプライマリ・データベースの CURRENT_SCN 列が 0 になる以外はプライマリ・データベースとスタンバイ・データベースは同じ内容になります。
Data Guard 正常時
管理スタンバイ(MANAGED STANDBY)が正常に動作している場合の、V$DATAGUARD_PROCESS ビューの内容を確認します。
プライマリ・データベース
以下はプライマリ・データベースで V$DATAGUARD_PROCESS を検索した結果です。CLIENT_PID 列はすべて 0 になっています。
SQL> SELECT pid,name,action,client_pid,client_role FROM v$dataguard_process ORDER BY 2;
PID NAME ACTION CLIENT_PID CLIENT_ROLE
------------------------ ----- ------------ ---------- ----------------
4751 ARC0 IDLE 0 none
4755 ARC1 IDLE 0 none
4757 ARC2 IDLE 0 none
4759 ARC3 IDLE 0 none
4687 LGWR IDLE 0 none
4729 TMON IDLE 0 none
4749 TT00 IDLE 0 none
4753 TT01 IDLE 0 none
4761 TT02 OPENING 0 none
4763 TT03 IDLE 0 none
4778 TT04 WRITING 0 none
11行が選択されました。
スタンバイ・データベース
以下はスタンバイ・データベースで V$DATAGUARD_PROCESS を検索した結果です。プロセスID 5283 の rfs プロセスの起動は一時的で常時起動しているわけではありません。
SQL> SELECT pid,name,action,client_pid,client_role FROM v$dataguard_process ORDER BY 2;
PID NAME ACTION CLIENT_PID CLIENT_ROLE
------------------------ ----- ------------ ---------- ----------------
5245 ARC0 IDLE 0 none
5252 ARC1 IDLE 0 none
5254 ARC2 IDLE 0 none
5257 ARC3 IDLE 0 none
5188 LGWR IDLE 0 none
19278 MRP0 IDLE 0 none
19284 PR00 APPLYING_LOG 0 none
19286 PR01 IDLE 0 none
19288 PR02 IDLE 0 none
19290 PR03 IDLE 0 none
19292 PR04 IDLE 0 none
5230 TMON IDLE 0 none
5247 TT00 IDLE 0 none
5249 TT01 IDLE 0 none
5277 rfs IDLE 4778 async ORL single
5283 rfs IDLE 4755 archive gap
5279 rfs IDLE 4749 gap manager
17行が選択されました。
プライマリ・データベースとスタンバイ・データベースのプロセス間通信の状況を以下のように確認できます。
プライマリ・プロセス(PID) | スタンバイ・プロセス(PID) | 備考 |
---|---|---|
TT04 (4778) | rfs (5277) | acync ORL single |
ARC1 (4755) | rfs (5283) | archive gap |
TT00 (4749) | rfs (5279) | gap manager |
従来の V$MANAGED_STANDBY ビューで確認していた内容を取得するにはスタンバイ・インスタンスで以下の SQL 文を実行します。
SQL> SELECT status FROM v$managed_standby WHERE process LIKE 'MRP%';
STATUS
------------
APPLYING_LOG
SQL> SELECT action FROM v$dataguard_process WHERE name='PR00';
ACTION
------------
APPLYING_LOG
プロセスを管理スタンバイ・リカバリ・プロセス(MRP0)ではなく、パラレル・リカバリ・コーディネータ(PR00)で検索します。
スタンバイ・インスタンス停止時
スタンバイ・インスタンスが停止した場合、プライマリ・インスタンスの V$DATAGUARD_PROCESS ビューの内容には変化がありません。
SQL> SELECT pid,name,action,client_pid,client_role FROM v$dataguard_process ORDER BY 2;
PID NAME ACTION CLIENT_PID CLIENT_ROLE
------------------------ ----- ------------ ---------- ----------------
4751 ARC0 IDLE 0 none
4755 ARC1 IDLE 0 none
4757 ARC2 IDLE 0 none
4759 ARC3 IDLE 0 none
4687 LGWR IDLE 0 none
4729 TMON IDLE 0 none
4749 TT00 IDLE 0 none
4753 TT01 IDLE 0 none
4761 TT02 OPENING 0 none
4763 TT03 IDLE 0 none
4778 TT04 WRITING 0 none
11行が選択されました。
スタンバイ・インスタンスMOUNT時
管理スタンバイ(MANAGED STANDBY)は実行せず、スタンバイ・インスタンスが MOUNT 状態の場合の V$DATAGUARD_PROCESS ビューの状態を確認します。
プライマリ・データベース
スタンバイ・インスタンス起動直後にプライマリ・インスタンスで V$DATAGUARD_PROCESS ビューを検索するとアーカイブ・ギャップを確認する FAL 要求に関するプロセスが起動していることが確認できます。
SQL> SELECT pid,name,action,client_pid,client_role FROM v$dataguard_process ORDER BY 2;
PID NAME ACTION CLIENT_PID CLIENT_ROLE
------------------------ ----- ------------ ---------- ----------------
4751 ARC0 IDLE 0 none
4755 ARC1 IDLE 0 none
4757 ARC2 IDLE 0 none
4759 ARC3 IDLE 0 none
4687 LGWR IDLE 0 none
4729 TMON IDLE 0 none
4749 TT00 IDLE 0 none
4753 TT01 IDLE 0 none
4761 TT02 OPENING 0 none
4763 TT03 IDLE 0 none
4778 TT04 WRITING 0 none
20714 fal IDLE 0 none
20714 fal IDLE 0 none
13行が選択されました。
アーカイブ・ギャップが無いことが確認できると fal プロセスは停止し、V$DATAGUARD_PROCESS ビューから情報が消えます。
SQL> SELECT pid,name,action,client_pid,client_role FROM v$dataguard_process ORDER BY 2;
PID NAME ACTION CLIENT_PID CLIENT_ROLE
------------------------ ----- ------------ ---------- ----------------
4751 ARC0 IDLE 0 none
4755 ARC1 IDLE 0 none
4757 ARC2 IDLE 0 none
4759 ARC3 IDLE 0 none
4687 LGWR IDLE 0 none
4729 TMON IDLE 0 none
4749 TT00 IDLE 0 none
4753 TT01 IDLE 0 none
4761 TT02 OPENING 0 none
4763 TT03 IDLE 0 none
4778 TT04 WRITING 0 none
スタンバイ・データベース
管理スタンバイを実行していない場合、V$DATAGUARD_PROCESS ビューには複数のプロセス情報が消えています。
SQL> SELECT pid,name,action,client_pid,client_role FROM v$dataguard_process ORDER BY 2;
PID NAME ACTION CLIENT_PID CLIENT_ROLE
------------------------ ----- ------------ ---------- ----------------
20695 ARC0 IDLE 0 none
20701 ARC1 IDLE 0 none
20703 ARC2 IDLE 0 none
20705 ARC3 IDLE 0 none
20632 LGWR IDLE 0 none
20674 TMON IDLE 0 none
20697 TT00 IDLE 0 none
20699 TT01 IDLE 0 none
20721 rfs IDLE 4778 async ORL single
20719 rfs IDLE 4749 gap manager
10行が選択されました。
管理スタンバイが停止している場合、以下のプロセス情報が V$DATAGUARD_PROCESS ビューから消えます。
プロセス名 | プロセス説明 | 備考 |
---|---|---|
MRP0 | 管理スタンバイ・リカバリ・プロセス | |
PR00 | パラレル・リカバリ・コーディネータ | |
PRnn | パラレル・リカバリ・ワーカー | 個数は可変 |
Author: Noriyoshi Shinoda / Date: February 27, 2024