oracleでInsert命令のチューニングを行うには以下の手段がある。
1.ダイレクトロードインサートを使う
メリット:
APPENDヒント句を記述するだけでOKなのでプログラムの改修が不要。
デメリット:
Insert実行後に必ずcommitを発行する必要がある。
表単位のロックが発生する。
ブロックの使用効率が悪い。
2.REDOログファイルを拡張する
大量のデータ(10万件程)をInsertする場合はREDOログは100MBくらいあるのが好ましい。
SELECT V$LOG.GROUP#, V$LOG.BYTES/1024/1024 AS MBYTES, V$LOG.STATUS, V$LOGFILE.MEMBER FROM V$LOG, V$LOGFILE WHERE V$LOG.GROUP# = V$LOGFILE.GROUP#;
削除等はここを参考に↓
3.UNDOセグメントを拡張する
UNDOセグメントのサイズを確認するSQL
SELECT NAME, BYTES /1024 /1024 AS MBYTE FROM V$DATAFILE WHERE NAME LIKE '%UNDO%';
UNDOセグメントのサイズを変更するSQL
ALTER DATABASE DATAFILE '/DATA/UNDO01.DBF' RESIZE 200M;
※'/DATA/UNDO01.DBF'の箇所にはUNDOセグメントのファイルを指定すること