ablog

不器用で落着きのない技術者のメモ

最速 Import 研究会

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