REDOログ順序番号のリセット

Oracle データベースでは障害に備えて変更情報を REDO ログに出力し、循環利用している。
アーカイブログモードで運用中のデータベースでは、REDO ログが循環し
上書きされる前に log_archive_dest パラメータで設定したディレクトリへ退避する。



初期化手順

データベースに対する変更が多いほど REDO ログが大量に出力され、
出力されるアーカイブログファイルも増え続ける。本番稼動前でありながら、
気づけばアーカイブのログ順序番号が4ケタに達することもある。

ログ順序番号のリセットは、障害が発生して、不完全リカバリ時にリセットログ
することが殆ど。(リセットログしないと、正常にデータベースを OPEN できない)

リカバリ時と同じ手法では、正常稼動しているデータベースをリセットログすることは
出来ないが、正常稼動時にもリセットログを行う方法は存在する。
正直好みの部分もあるが、状況として本番 C/O のタイミングなどが考えられる。

(1) 現在のログ順序番号を確認

SQL> archive log list

データベース・ログ・モード    アーカイブ・モード
自動アーカイブ                使用禁止
アーカイブ先                  <出力先パス>
最も古いオンライン・ログ順序  1004
現行のログ順序                1006

(2) インスタンス停止

SQL> shutdown immediate

データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。

(3) コールドバックアップ取得

※必須ではないがバックアップ推奨。

(4) マウントモードで起動

SQL> startup mount

ORACLEインスタンスが起動しました。

Total System Global Area  652615680 bytes
Fixed Size                  2630110 bytes
Variable Size             408946210 bytes
Database Buffers          225443840 bytes
Redo Buffers               15595520 bytes
データベースがマウントされました。

(5) cancel ベースの recover database を実行

SQL> recover database until cancel;

メディア・リカバリが完了しました。

(6) resetlogs オプション付きでインスタンス起動

SQL> alter database open resetlogs;

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

(7) 変更後のログ順序番号を確認

SQL> archive log list

データベース・ログ・モード    アーカイブ・モード
自動アーカイブ                有効
アーカイブ先                  <出力先パス>
最も古いオンライン・ログ順序  1
アーカイブする次のログ順序    1
現行のログ順序                1

ログ順序番号が1に変更された。