Insert文のチューニング


oracleでInsert命令のチューニングを行うには以下の手段がある。



1.ダイレクトロードインサートを使う



メリット:
APPENDヒント句を記述するだけでOKなのでプログラムの改修が不要。


デメリット:
Insert実行後に必ずcommitを発行する必要がある。
表単位のロックが発生する。
ブロックの使用効率が悪い。



http://d.hatena.ne.jp/haradago/20080528/p3


2.REDOログファイルを拡張する


大量のデータ(10万件程)をInsertする場合はREDOログは100MBくらいあるのが好ましい。


REDOログサイズ、個数を確認するSQL

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#;


削除等はここを参考に↓

http://d.hatena.ne.jp/y_mori/20070504/1178301059


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セグメントのファイルを指定すること