REDOログファイルのサイズ変更方法

この記事ではREDOログファイルのサイズを変更する方法を解説します。

 REDOログファイルのサイズを変更する方法

REDOログファイルはDBをオンライン状態のままサイズの変更を行うことができます。

作業としては一時的に利用するREDOログファイルを追加し、既存のREDOログファイルを1度削除し、REDOログファイルを作り直すという流れになります。


 作業例

例として既存のREDOロググループ1、2、3のREDOログファイルのサイズを200GBに変更します。


①一時的に利用するREDOロググループを追加する

REDOロググループはログスイッチができるように最低2つ以上のグループが必要となります。

そのため、REDOログファイルは2グループ追加する必要があります。

既存のREDOロググループが1~3まで存在しているため、既存グループと被らないように4、5を追加します。

一時的に利用するだけなのでサイズは適当で大丈夫です。

SQL> alter database add logfile group 4 SIZE 100M;
SQL> alter database add logfile group 5 SIZE 100M;


②追加した一時REDOロググループが「CURRENT」になるようにログスイッチする

サイズ変更したいREDOログファイルを一度削除します。

ただし、書き込み中のREDOログファイルは削除できません。

そのため、ログスイッチを行い①で追加したREDOログファイルが書き込み状態になるようにします。

まずは下記のSQLでログステータスの確認をします。

SQL> select group#, status from v$log;
GROUP# STATUS
------ --------
     1 INACTIVE
     2 CURRENT
     3 INACTIVE
     4 UNUSED
     5 UNUSED

現在ロググループ2が「CURRENT」なのでロググループ4か5のステータスが「CURRENT」になるまでログスイッチします。

ログスイッチは下記のALTER文で行います。

SQL> alter system archive log current;


③既存REDOロググループを削除する

既存のロググループのステータスが「INACTIVE」になったのを確認します。

ステータスは「CURRENT」→「ACTIVE」→「INACTIVE」の順で遷移していきます。

「ACTIVE」から「INACTIVE」に変わるのには時間がかかる場合があり、すぐに遷移させたい場合はチェックポイントを実行します。

SQL> alter system checkpoint;

ステータスが「INACTIVE」になったことを確認したらREDOログファイルを削除します。

SQL> alter database drop logfile group 1;
データベースが変更されました。
SQL> alter database drop logfile group 2;
データベースが変更されました。
SQL> alter database drop logfile group 3;
データベースが変更されました。


④REDOロググループの再作成する

削除したREDOログファイルを変更後のサイズで再作成します。

SQL> alter database add logfile group 1 SIZE 200M;
SQL> alter database add logfile group 2 SIZE 200M;
SQL> alter database add logfile group 3 SIZE 200M;


⑤サイズ変更したロググループが「CURRENT」になるようにログスイッチする

②の作業と同様に追加した一時REDOログを削除するために、サイズ変更したREDOログのステータスが「CURRENT」になるまでログスイッチします。


⑥一時追加したREDOロググループを削除する

③の作業と同様に一時REDOログファイルのステータスが「INACTIVE」になってのを確認し、REDOログファイルを削除します。

SQL> alter database drop logfile group 4;
データベースが変更されました。
SQL> alter database drop logfile group 5;
データベースが変更されました。

以上でREDOログファイルのサイズ変更は完了になります。