Oracle Data Guard環境では V\$ARCHIVE_DEST_STATE ビューや V\$MANAGED_STANDBY ビューで状態を確認します。本記事ではプライマリ・インスタンス停止が発生したときと、MANAGED STANDBYがキャンセルされたときにこれらのビューの内容がどのように変化するかを確認します。環境は昨日の記事と同じです。
プライマリ停止
プライマリ・インスタンスを異常終了させて、スタンバイ・インスタンスの状態を確認します。
ALERTファイルの状態
alertファイルには接続が切れたことが直ちに出力されます。
2020-12-10T10:24:09.586896+09:00
rfs (PID:42589): Possible network disconnect with primary database
2020-12-10T10:24:09.598992+09:00
rfs (PID:42587): Possible network disconnect with primary database
V$ARCHIVE_DEST_STATUSの状態
V\$ARCHIVE_DEST_STATUS ビューは変化がありません。STATUS 列はVALID で、RECOVERY_MODE列はMANAGED REAL TIME APPLY のままです。V$MANAGED_STANDBY ビューにも変化はありません。
SQL> SELECT dest_name, status, recovery_mode FROM v$archive_dest_status WHERE dest_id IN (1, 2) ORDER BY 1;
DEST_NAME STATUS RECOVERY_MODE
------------------------------ --------- ----------------------------------
LOG_ARCHIVE_DEST_1 VALID MANAGED REAL TIME APPLY
LOG_ARCHIVE_DEST_2 VALID IDLE
SQL> SELECT status FROM v$managed_standby WHERE process LIKE 'MRP%';
STATUS
------------
APPLYING_LOG
プライマリ・インスタンスの起動
プライマリ・インスタンスを起動します。スタンバイ・インスタンスのalertログには接続が復活したことを示すメッセージが出力されます。
2020-12-10T10:27:06.331100+09:00
rfs (PID:44277): Primary database is in MAXIMUM PERFORMANCE mode
2020-12-10T10:27:06.365077+09:00
rfs (PID:44277): Selected LNO:11 for T-1.S-78 dbid 2941070004 branch 1055164276
2020-12-10T10:27:06.380011+09:00
rfs (PID:44275): Selected LNO:12 for T-1.S-77 dbid 2941070004 branch 1055164276
2020-12-10T10:27:06.533684+09:00
PR00 (PID:42840): Media Recovery Waiting for T-1.S-78 (in transit)
2020-12-10T10:27:06.541579+09:00
Recovery of Online Redo Log: Thread 1 Group 11 Seq 78 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/O19S/slog11.dbf
2020-12-10T10:27:06.577222+09:00
ARC0 (PID:42564): Archived Log entry 70 added for T-1.S-77 ID 0xaf4d09b4 LAD:1
スタンバイ・インスタンスの V$ARCHIVE_DEST_STATE ビューやV\$MANAGED_STANDBY ビューには何の変化もありません。
MANAGED STANDBYのキャンセルと復帰
MANAGED STANDBYのキャンセル
スタンバイ・インスタンスで ALTER DATABASE RECOVER MANAGED STANDBY CANCEL 文を実行します。スタンバイ・インスタンスの alert ログには処理の完了メッセージが出力されます。
2020-12-10T10:37:10.267347+09:00
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
2020-12-10T10:37:10.270076+09:00
PR00 (PID:42840): MRP0: Background Media Recovery cancelled with status 16037
2020-12-10T10:37:10.275652+09:00
Errors in file /u01/app/oracle/diag/rdbms/o19s/O19S/trace/O19S_pr00_42840.trc:
ORA-16037: user requested cancel of managed recovery operation
PR00 (PID:42840): Managed Standby Recovery not using Real Time Apply
Recovery interrupted!
Recovered data files to a consistent state at change 7685343
stopping change tracking
2020-12-10T10:37:10.351243+09:00
Errors in file /u01/app/oracle/diag/rdbms/o19s/O19S/trace/O19S_pr00_42840.trc:
ORA-16037: user requested cancel of managed recovery operation
2020-12-10T10:37:10.464808+09:00
Background Media Recovery process shutdown (O19S)
2020-12-10T10:37:11.269815+09:00
Managed Standby Recovery Canceled (O19S)
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL
V\$ARCHIVE_DEST_STATUS ビューの log_archive_dest_1 のRECOVERY_MODE 列は IDLE に戻ります。MRP プロセスは停止するため V$MANAGED_STANDBY ビューからはエントリーが消えます。
SQL> SELECT dest_name, status, recovery_mode FROM v$archive_dest_status WHERE dest_id IN (1, 2) ORDER BY 1;
DEST_NAME STATUS RECOVERY_MODE
------------------------------ --------- ----------------------------------
LOG_ARCHIVE_DEST_1 VALID IDLE
LOG_ARCHIVE_DEST_2 VALID IDLE
SQL> SELECT status FROM v$managed_standby WHERE process LIKE 'MRP%';
レコードが選択されませんでした。
プライマリ・インスタンスの V$ARCHIVE_DEST_STATUS ビューのRECOVERY_MODE 列 も IDLE になります。
SQL> SELECT dest_name, status, recovery_mode FROM v$archive_dest_status WHERE dest_id IN (1, 2) ORDER BY 1;
DEST_NAME STATUS RECOVERY_MODE
------------------------------ --------- ----------------------------------
LOG_ARCHIVE_DEST_1 VALID IDLE
LOG_ARCHIVE_DEST_2 VALID IDLE
MANAGED STANDBYの復帰
スタンバイ・インスタンスで ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT 文を実行します。スタンバイ・インスタンスの alert ログには処理完了のメッセージが出力されます。
2020-12-10T10:42:33.150775+09:00
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
2020-12-10T10:42:33.151156+09:00
Attempt to start background Managed Standby Recovery process (O19S)
Starting background process MRP0
2020-12-10T10:42:33.159680+09:00
MRP0 started with pid=8, OS id=45250
2020-12-10T10:42:33.160435+09:00
Background Managed Standby Recovery process started (O19S)
2020-12-10T10:42:38.175418+09:00
Started logmerger process
2020-12-10T10:42:38.182064+09:00
PR00 (PID:45256): Managed Standby Recovery starting Real Time Apply
2020-12-10T10:42:38.220576+09:00
Parallel Media Recovery started with 4 slaves
2020-12-10T10:42:38.336731+09:00
stopping change tracking
PR00 (PID:45256): Media Recovery Waiting for T-1.S-78 (in transit)
2020-12-10T10:42:38.485182+09:00
Recovery of Online Redo Log: Thread 1 Group 11 Seq 78 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/O19S/slog11.dbf
2020-12-10T10:42:39.167813+09:00
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT
プライマリ・インスタンスの alert ログには何も出力されませんが、V$ARCHIVE_DEST_STATUS ビューは変化します。
SQL> SELECT dest_name, status, recovery_mode FROM v$archive_dest_status WHERE dest_id IN (1, 2) ORDER BY 1;
DEST_NAME STATUS RECOVERY_MODE
------------------------------ --------- ----------------------------------
LOG_ARCHIVE_DEST_1 VALID IDLE
LOG_ARCHIVE_DEST_2 VALID MANAGED REAL TIME APPLY