REDOログファイルのサイズ変更方法
色々調べたが、既存のREDOログファイルのサイズを変更することはできないみたい。
REDOログファイルのサイズを変更するには、下記手順を踏まないといけない。
1.既存のREDOロググループを削除
現状のログファイルサイズ確認
SQL> COL MEMBER FORMAT A55 SQL> COL STATUS FORMAT A10 SQL> SQL> SELECT LOG.GROUP#, 2 LOG.BYTES/1024/1024 AS MBYTES, 3 LOG.STATUS, 4 LOGFILE.MEMBER 5 FROM V$LOG LOG, 6 V$LOGFILE LOGFILE 7 WHERE LOG.GROUP# = LOGFILE.GROUP#; GROUP# MBYTES STATUS MEMBER ---------- ---------- ---------- ------------------------------------------------------- 3 50 CURRENT D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG 2 50 INACTIVE D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG 1 50 INACTIVE D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01.LOG
3つグループがあってすべて50MB。
STATUSがINACTIVEのグループだけ削除可能。*1
INACTIVEのグループ番号を指定して削除。
SQL> alter database drop logfile group 1; データベースが変更されました。
グループ2も削除したいところだが、REDOロググループは最低2グループ必要なのでグループ1を再作成してから削除することに。
削除完了。OS上にはファイルが残っているので物理削除しておく。
GROUP# MBYTES STATUS MEMBER ---------- ---------- ---------- ------------------------------------------------------- 3 50 CURRENT D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG 2 50 INACTIVE D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG
2.新しいREDOロググループを作成
新しいグループを作成する。このときサイズを指定する。
SQL> ALTER DATABASE ADD LOGFILE GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01_1.LOG' SIZE 4M; データベースが変更されました。
最初1Mを指定したらエラーとなった。恐らくブロックサイズ以下の値は指定できないのだろう。*2
確認すると追加されている。
GROUP# MBYTES STATUS MEMBER ---------- ---------- ---------- ------------------------------------------------------- 3 50 CURRENT D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO03.LOG 2 50 INACTIVE D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG 1 4 UNUSED D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO01_1.LOG
これでサイズの変更完了。
あとは2,3のグループに対してもこれを繰り返す。*3
今回は処理がとまっているときに行ったが、実際の業務中でも手早くやればそんなに危険はない。ハズ。