Oracle の Import を高速化してみた。本当に速くなってるかどうかは不明w
本番環境じゃやっちゃいけない危険なことをしています。
環境は Oracle10gR2(10.2.0.4.0) EE on CentOS5.3(32bit) です。
- I/O スケジューラを deadline にする。
# vi /boot/grub/grub.conf kernel /boot/vmlinuz-2.6.18-128.el5 ro root=LABEL=/1 elevator=deadline
- ext3 のマウントオプションを設定する(writeback、noatime)。
# vi /etc/fstab LABEL=/opt /opt ext3 defaults,noatime,data=writeback 1 2
- 再起動する
# shutdown -r now
- 設定が反映されていることを確認する。
# mount # cat /sys/block/*/queue/scheduler
- NOARCHIVELOG モード にする。
# su - oracle $ sqlplus / as sysdba SQL> shutdown immediate SQL> startup mount SQL> alter database noarchivelog SQL> alter database open;
- LOG_CHECKPOINT_INTERVALの値をREDOログのサイズより大きくする。
SQL> alter system set log_checkpoint_interval=999999999 scope=both; SQL> exit
- import を実行する。
$ export LANG=C $ export NLS_LANG=American_America.JA16SJISTILDE $ nohup imp system/manager fromuser=scott touser=scott buffer=51380224 commit=y ignore=y file=scott_exp.dmp > scott_imp.log 2>&1 &
- imp と サーバープロセスの優先度を上げる。
$ ps -ef $ sudo renice -20 -p 3352 $ sudo renice -20 -p 3353