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