***redoログサイズの変更 [#o55dfe99]
オラクルのREDOログサイズを増やします。
サイズが小さいとSQLLoaderらで連続投入とかしてたらオラクル事態が落ちたので。
sysdba権限でログインして
#code(sql,number,nooutline,noblock,nomenu){{
column MEMBER format a30 *sqlplusでの書式設定
column STATUS format a10 *sqlplusでの書式設定
SELECT
L1.group#,
L2.thread#,
L1.member,
L2.bytes,
L2.status
FROM
v$logfile L1,
v$log L2
WHERE
L1.group# = L2.group#;
}}
として、現状を確認
#code(nonumber){{
GROUP# THREAD# MEMBER BYTES STATUS
---------- ---------- ------------------------------ ---------- ----------
3 1 D:\ORADATA\AERS\REDO03.LOG 52428800 INACTIVE
2 1 D:\ORADATA\AERS\REDO02.LOG 52428800 CURRENT
1 1 D:\ORADATA\AERS\REDO01.LOG 52428800 INACTIVE
}}
現状、GROUP#で、1と3が&color(red){INACTIVE};で削除して新しいREDOログファイルを用意できそうだと。
っで、
#code(sql,number,nooutline,noblock,nomenu){{
ALTER DATABASE DROP LOGFILE GROUP 1;
データベースが変更されました。
}}
にて1のREDOログファイルを削除して、物理的にもD:\ORADATA\AERS\REDO01.LOG(51MB)を削除します。
&ref(2013y01m28d_211845641.png,nolink);
次に容量を増やしたREDOログファイルREDO01.LOG(200MB)を用意します。
#code(sql,number,nooutline,noblock,nomenu){{
ALTER DATABASE ADD LOGFILE GROUP 1 'D:\ORADATA\AERS\REDO01.LOG' SIZE 200M;
}}
実際にファイルシステムからも
&ref(2013y01m28d_212209855.png,nolink);
のように作成されました。
この状態で、再度現状確認、
#code(nonumber){{
GROUP# THREAD# MEMBER BYTES STATUS
---------- ---------- ------------------------------ ---------- ----------
3 1 D:\ORADATA\AERS\REDO03.LOG 52428800 INACTIVE
2 1 D:\ORADATA\AERS\REDO02.LOG 52428800 CURRENT
1 1 D:\ORADATA\AERS\REDO01.LOG 209715200 UNUSED
}}
とGROUP1はUNUSEDになった。
次に、同じ&color(red){INACTIVE};なGROUP3に対してGROUP1と同様の操作でサイズを増やします。
#code(sql,number,nooutline,noblock,nomenu){{
ALTER DATABASE DROP LOGFILE GROUP 3;
}}
そして、物理的にD:\ORADATA\AERS\REDO03.LOGを削除します。
その後、同様に容量の増やしたREDOログファイルREDO03.LOG(200MB)を用意します。
#code(sql,number,nooutline,noblock,nomenu){{
ALTER DATABASE ADD LOGFILE GROUP 3 'D:\ORADATA\AERS\REDO03.LOG' SIZE 200M;
}}
これで&color(red){INACTIVE};なREDOログは差し替えられた。残っているのはCURRENTなREDOログファイルREDO02.LOGだけとなる。
現状を確認すると、
#code(nonumber){{
GROUP# THREAD# MEMBER BYTES STATUS
---------- ---------- ------------------------------ ---------- ----------
3 1 D:\ORADATA\AERS\REDO03.LOG 209715200 UNUSED
2 1 D:\ORADATA\AERS\REDO02.LOG 52428800 CURRENT
1 1 D:\ORADATA\AERS\REDO01.LOG 209715200 UNUSED
}}
REDOログファイルは輪廻を繰り返すので、SQLでそれを進ませます。
#code(sql,number,nooutline,noblock,nomenu){{
ALTER SYSTEM SWITCH LOGFILE;
システムが変更されました。
}}
すると状態は変更して
#code(nonumber){{
GROUP# THREAD# MEMBER BYTES STATUS
---------- ---------- ------------------------------ ---------- ----------
3 1 D:\ORADATA\AERS\REDO03.LOG 209715200 UNUSED
2 1 D:\ORADATA\AERS\REDO02.LOG 52428800 ACTIVE
1 1 D:\ORADATA\AERS\REDO01.LOG 209715200 CURRENT
}}
と代わる。&color(red){ACTIVE};のままでは削除できないので、次のSQLを実行します。
#code(sql,number,nooutline,noblock,nomenu){{
ALTER SYSTEM CHECKPOINT;
システムが変更されました。
}}
で、再度確認
#code(nonumber){{
GROUP# THREAD# MEMBER BYTES STATUS
---------- ---------- ------------------------------ ---------- ----------
3 1 D:\ORADATA\AERS\REDO03.LOG 209715200 UNUSED
2 1 D:\ORADATA\AERS\REDO02.LOG 52428800 INACTIVE
1 1 D:\ORADATA\AERS\REDO01.LOG 209715200 CURRENT
}}
とREDOログファイルREDO2.LOGがようやく&color(red){INACTIVE};になった。っで同様に
#code(sql,number,nooutline,noblock,nomenu){{
ALTER DATABASE DROP LOGFILE GROUP 2;
}}
として、物理ファイルも削除して、新規のREDOログファイルREDO2.LOG(200MB)を作る
#code(sql,number,nooutline,noblock,nomenu){{
ALTER DATABASE ADD LOGFILE GROUP 2 'D:\ORADATA\AERS\REDO02.LOG' SIZE 200M;
}}
これで完了。最終的には
#code(nonumber){{
GROUP# THREAD# MEMBER BYTES STATUS
---------- ---------- ------------------------------ ---------- ----------
3 1 D:\ORADATA\AERS\REDO03.LOG 209715200 UNUSED
2 1 D:\ORADATA\AERS\REDO02.LOG 209715200 UNUSED
1 1 D:\ORADATA\AERS\REDO01.LOG 209715200 CURRENT
}}
となり、物理ファイルでは
&ref(2013y01m28d_213757719.png,nolink);
となる。