1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Data Guard環境で確認するビューとOracle Database 12c Release 2での変更

Last updated at Posted at 2017-09-01

Oracle Data Guard Physical Standby を使ってスタンバイ・データベースを構築している場合、状態を確認するためにいくつかのビューを検索します。ここでは、確認すべきビューと、Oracle Database 12c Release 2 で変更された部分について説明しています。下記の例は、プライマリ・インスタンスの一意名をDB1、スタンバイ・インスタンスの一意名をDB1Rとしています。

プライマリー・インスタンスで確認すべき項目

V$DATABASE

基本的なデータベース設定を確認します。

SQL> SELECT LOG_MODE, PROTECTION_MODE, DATABASE_ROLE, FORCE_LOGGING FROM V$DATABASE;

LOG_MODE     PROTECTION_MODE      DATABASE_ROLE   FORCE_LOGGING
------------ -------------------- ---------------- ---------------------------------------
ARCHIVELOG   MAXIMUM PERFORMANCE  PRIMARY           YES

PROTECTION_MODE 列は Data Guard の保護モードを示します。多くの場合 MAXIMUM PERFORMANCE になっているはずですが、保護モードをより強力に変更している場合には異なる場合があります。FORCE_LOGGING 列はNOLOGGING属性を強制的に無効にする設定です。

V$ARCHIVED_LOG

Redo ログからアーカイブ・ログを生成していることを確認します。また、同じ SEQUENCE# 列で、スタンバイ・インスタンスへ転送していることを確認します。
これは NAME 列がスタンバイ向けの名前になっていることを確認します。

SQL> SELECT SEQUENCE#, NAME, STATUS FROM V$ARCHIVED_LOG ORDER BY 1;
...
 SEQUENCE# NAME                                                  STATUS
---------- ----------------------------------------------------- --------
       107 /u01/app/oracle/oradata/arch/1_107_947334793.dbf      A
       107 DB1R                                                  A
       108 /u01/app/oracle/oradata/arch/1_108_947334793.dbf      A
       108 DB1R                                                  A
       109 /u01/app/oracle/oradata/arch/1_109_947334793.dbf      A
       109 DB1R                                                  A

V$ARCHIVE_DEST_STATUS

Redo ログ/アーカイブログの転送先として、log_archive_dest_N 初期化パラメーターの設定と、状態を確認します。Redoログ転送によるReal Time Applyを行う場合は、RECOVERY_MODE 列が MANAGED REAL TIME APPLYになっているはずです。MANAGED になっている場合は Real Time Apply 状態になっていません。

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_NAME='LOG_ARCHIVE_DEST_2';

RECOVERY_MODE
-----------------------
MANAGED REAL TIME APPLY

スタンバイ・インスタンスで確認すべき項目

V$MANAGED_STANDBY

リカバリーを行う MRP0 プロセスの状態を確認します。 STATUS 列がAPPLY_LOG になっていれば受信した Redo ログを適用中です。

SQL> SELECT PROCESS, PID, STATUS FROM V$MANAGED_STANDBY WHERE PROCESS='MRP0';
PROCESS   PID                      STATUS
--------- ------------------------ ------------
MRP0      34281                    APPLYING_LOG

V$ARCHIVED_LOG

受信した Redo ログからアーカイブ・ログを生成していることを確認します。SEQUENCE# 列がプライマリ・インスタンスと同じになっているか確認してください。

SQL> SELECT SEQUENCE#, NAME, STATUS FROM V$ARCHIVED_LOG ORDER BY 1;
...
 SEQUENCE# NAME                                                  STATUS
---------- ----------------------------------------------------- --------
       107 /u01/app/oracle/oradata/arch/db1r/1_107_947334793.dbf A
       108 /u01/app/oracle/oradata/arch/db1r/1_108_947334793.dbf A
       109 /u01/app/oracle/oradata/arch/db1r/1_109_947334793.dbf A

V$ARCHIVE_GAP

アーカイブログの受信ギャップを確認します。正常状態ではこのビューからはレコードは検索されません。

SQL> SELECT COUNT(*) FROM V$ARCHIVE_GAP;
  COUNT(*)
----------
         0

Oracle Database 12c Release 2 による変更

Oracle Database 12c Release 2 では V\$MANAGED_STANDBY ビューは非推奨になりました。代わりに V$DATAGUARD_PROCESS ビューを使います。ただしこの二つのビューは内容が微妙に異なります。

列名の対比

V$MANAGED_STANDBY V$DATAGUARD_PROCESS
PROCESS NAME
PID PID
- TYPE
- ROLE
- PROC_TIME
- TASK_TIME
- TASK_DONE
STATUS ACTION
CLIENT_PROCESS CLIENT_ROLE
CLIENT_PID CLIENT_PID
CLIENT_DBID -
GROUP# GROUP#
RESETLOG_ID RESETLOG_ID
THREAD# THREAD#
SEQUENCE# SEQUENCE#
BLOCK# BLOCK#
BLOCKS BLOCK_COUNT
DELAY_MINS DELAY_MINS
- DEST_ID
- DEST_MASK
- DBID
- DGID
- STOP_STATE
KNOWN_AGENTS -
ACTIVE_AGENTS -
CON_ID CON_ID

出力されるプロセス名の対比

各ビューに出力されるプロセス名も異なります。V$DATAGUARD_PROCESSには出力されるレコード数が増えています。

V$MANAGED_STANDBY.PROCESS V$DATAGUARD_PROCESS.NAME
- LGWR
- TMON
ARCH ARC0
DGRD TT00
DGRD TT01
ARCH ARC1
ARCH ARC2
ARCH ARC3
RFS rfs
MRP0 MRP0

ステータス列の対比

Redo適用状態になっている場合、V$MANAGED_STANDBY ビューの STATUS 列は APPLYING_LOG になっていますが、V$DATAGUARD_PROCESS ビューでは検索時点のステータスを出力するため通常はIDLEになっています。

SQL> SELECT process, pid, status FROM V$MANAGED_STANDBY WHERE process='MRP0';

PROCESS   PID                   STATUS
--------- --------------------- ------------
MRP0      8541                  APPLYING_LOG

SQL> SELECT name, pid, action FROM V$DATAGUARD_PROCESS WHERE name='MRP0';

NAME  PID                      ACTION
----- ------------------------ ------------
MRP0  8541                     IDLE
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?