ロググループがINACTIVEであること

前回の「一時 REDO ログの追加」を行った後、既存 REDO ログの削除手順を行う。

REDO ロググループ1~3を一旦削除するためには、ステータスに注意が必要。
削除時には INACTIVE でなければならない (CURRENT や ACTIVE ではエラーとなる) 。

下記状態では グループ2がカレントであるため削除不可。よってログスイッチして、
グループ1~3が INACTIVE、4か5が CURRENT とする必要がある。

一時使用のREDOロググループ4,5を追加した時点

SQL> select group#, status from v$log;

GROUP# STATUS
------ --------
     1 INACTIVE
     2 CURRENT
     3 INACTIVE
     4 UNUSED
     5 UNUSED

ログスイッチ

SQL> alter system archive log current;

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

※4か5が CURRENT になるまで繰り返し。

ステータスの確認

SQL> select group#, status from v$log;

GROUP# STATUS
------ --------
     1 INACTIVE
     2 INACTIVE
     3 INACTIVE
     4 ACTIVE
     5 CURRENT

REDO ロググループ1~3を削除する

SQL> alter database drop logfile group 1;

データベースが変更されました。

SQL> alter database drop logfile group 2;

データベースが変更されました。

SQL> alter database drop logfile group 3;

データベースが変更されました。

ORAエラー発生

もし INACTIVE 以外のステータスの REDO ロググループを
削除しようとした場合、ORA-01624 や ORA-00312 が発生する。

SQL> alter database drop logfile group 2;
alter database drop logfile group 2
*
行1でエラーが発生しました。:
ORA-01624:
ログ2はインスタンスhoge(スレッド1)のクラッシュ・リカバリに必要です。
ORA-00312: オンライン・ログ2 スレッド1: '/app/oradata/redo02.log'
ORA-00312: オンライン・ログ2 スレッド1: '/share/oradata/redo02.log'

削除後の状態を確認

SQL> select group#, status from v$log;

GROUP# STATUS
------ -------
     4 ACTIVE
     5 CURRENT

(次回に続く)

関連記事