LoginSignup
0
0

More than 3 years have passed since last update.

Data Guardでスタンバイ停止時の状態を確認する(Oracle Database 19c)

Last updated at Posted at 2020-12-10

Oracle Data Guard環境ではV\$ARCHIVE_DEST_STATEビューやV\$MANAGED_STANDBYビューで状態を確認します。本記事ではスタンバイ・インスタンス停止が発生したときにこれらのビューの内容がどのように変化するかを確認します。

正常な状態と設定

環境

本記事で使用する環境は以下の通りです。Oracle Database 19c (19.7) Enterprise Edition for Linux x86-64、Data Guard Brokerは使っていません。

インスタンス名 説明 備考
O19A プライマリ・インスタンス
O19S スタンバイ・インスタンス Physical Standby, Realtime Apply

関連する初期化パラメーター設定は以下の通りです。fal_serverやlog_archive_config等も必要ですが省略しています。log_archive_dest_1にはローカル保存設定、log_archive_dest_2にはData Guardスタンバイ・インスタンスへの送信設定を行っています。

インスタンス 初期化パラメータ 設定
O19A log_archive_dest_1 LOCATION=/u01/app/oracle/admin/O19A/archive VALID_FOR=(all_logfiles,all_roles) db_unique_name=O19A
O19A log_archive_dest_2 SERVICE=O19S ASYNC VALID_FOR=(online_logfiles, primary_role) db_unique_name=O19S
O19S log_archive_dest_1 LOCATION=/u01/app/oracle/admin/O19S/archive VALID_FOR=(all_logfiles, all_roles) db_unique_name=O19S
O19S log_archive_dest_2 SERVICE=O19A ASYNC VALID_FOR=(online_logfiles, primary_role)db_unique_name=O19A

正常な状態

正常に接続できている状態は以下の通りです。log_archive_destの状態はMANAGED REAL TIME APPLYになっています。MRPプロセスはAPPLYING_LOG状態です。

プライマリ・インスタンス

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

スタンバイ・インスタンス

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ファイルの状態

alertファイルには接続が切れたことが直ちに出力されます。

2020-12-10T09:52:00.722941+09:00
Errors in file /u01/app/oracle/diag/rdbms/o19a/O19A/trace/O19A_tt02_31219.trc:
ORA-03135: connection lost contact
TT02 (PID:31219): Error 3135 for LNO:9 to 'O19S'
2020-12-10T09:52:00.724994+09:00
Errors in file /u01/app/oracle/diag/rdbms/o19a/O19A/trace/O19A_tt02_31219.trc:
ORA-03135: connection lost contact
2020-12-10T09:52:00.725242+09:00
Errors in file /u01/app/oracle/diag/rdbms/o19a/O19A/trace/O19A_tt02_31219.trc:
ORA-03135: connection lost contact

V$ARCHIVE_DEST_STATUSの状態

V\$ARCHIVE_DEST_STATUSビューは、STATUS列がERRORになりますが、RECOVERY_MODE列はMANAGED REAL TIME APPLYのままです。プライマリ・インスタンスが再接続を試行してもこの状態は変わりません。

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             ERROR     MANAGED REAL TIME APPLY

スタンバイ・インスタンスの起動

スタンバイ・インスタンスをMOUNT状態で起動します(MANAGED STANDBY設定は実施しません)。プライマリ・インスタンスのalertログには接続が復活したことを示すメッセージが出力されます。

2020-12-10T09:58:05.244548+09:00
ALTER SYSTEM SET log_archive_dest_state_2='ENABLE' SCOPE=MEMORY SID='*';
2020-12-10T09:58:05.438798+09:00
TT04 (PID:41444): SRL selected for T-1.S-77 for LAD:2

プライマリ・インスタンスのV\$ARCHIVE_DEST_STATEビューのRECOVERY_MODE列はこの時点でIDLEになります。STATUS列はVALIDに戻ります。

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

スタンバイ・インスタンスのV\$ARCHIVE_DEST_STATEビューは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状態に移行

スタンバイ・インスタンスでMANAGED STANDBYを実行します。プライマリ・インスタンスのV\$ARCHIVE_DEST_STATEビューのRECOVERY_MODE列はやや時間をおいてMANAGED REAL TIME APPLYになります。この変化があるときにはalertログには何も出力されません。

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

スタンバイ・インスタンスではlog_archive_dest_1の状態がMANAGED REAL TIME APPLYに変化します。

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0