この記事では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ログファイルのサイズ変更は完了になります。