REDOログのステータスを確認

REDO ロググループやメンバの追加/削除を行うとき、その対象のステータスが
INACTIVE でなければならず、 ACTIVE の場合は変更が出来ない。
ACTIVE はチェックポイントの未完了を示している。



チェックポイントのタイミング

チェックポイントは alter system switch logfile や alter system archive log current
などの明示的なログ切替の他に、表領域のバックアップモード時や abort を
除くインスタンスのシャットダウンで内部的に発行される。

参照する動的パフォーマンスビュー

REDO ロググループ の情報を参照するには、動的パフォーマンスビューの v$log を
参照すればよい。(メンバのパスなどを知りたい場合は、v$logfile を参照。)

 

検証

変更前状態

SQL> select group#, members, archived, status, bytes/1024/1024 mbyte from v$log;

GROUP    MEMBERS ARCHIVED     STATUS        MBYTE
----- ---------- ---------- ---------- ----------
    1          2 YES        INACTIVE          100
    2          2 NO         CURRENT           100
    3          2 YES        INACTIVE          100

この状態で手動ログスイッチ

SQL> alter system archive log current;

システムが変更されました。

ログスイッチ後

GROUP    MEMBERS ARCHIVED     STATUS        MBYTE
----- ---------- ---------- ---------- ----------
    1          2 YES        INACTIVE          100
    2          2 YES        ACTIVE            100 → INACTIVE にならない。
    3          2 NO         CURRENT           100

カレントだったグループ2の ARCHIVED が YES に変わったが、STATUS は未だ
ACTIVE のまま。アーカイブは終了したようだがチェックポイントが未済である。

(グループ3はカレントなので当然として、)この状態ではグループ2に対しての
変更を行うことができない。待っていれば、内部的にチェックポイントが
実行されて STATUS は INACTIVE に変わるが、なかなか変わらないこともある。

 

対処方法

その場合は、手動でチェックポイントを発生させればよい。

チェックポイント

SQL> alter system checkpoint;

システムが変更されました。

チェックポイント実行後

GROUP    MEMBERS ARCHIVED     STATUS        MBYTE
----- ---------- ---------- ---------- ----------
    1          2 YES        INACTIVE          100
    2          2 YES        INACTIVE          100
    3          2 NO         CURRENT           100

→ステータスが変更された。
待っている暇がないなら、手動でチェックポイントを実行してしまうのも手。