熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

如何加快imp速度

2013-11-13 15:59:52  來源: Oracle 
EXPORT:

&#;        增加 BUFFER (eg )
&#;        停止所有應用(不一定現實)
&#;        export文件不在ORACLE使用的驅動器上
&#;        不要export到NFS文件系統


IMPORT:
&#;        建立一個indexfile在數據import完成後在建立索引
&#;        將import文件放在不同的驅動器上
&#;        增加DB_BLOCK_BUFFERS
&#;        增加LOG_BUFFER
&#;        用非歸檔方式運行ORACLE
                如果有個大的日志文件當然也會提高速度不過臨時加大太煩瑣
       ALTER DATABASE NOARCHIVELOG;
&#;        建立大的表空間和大的回滾段OFFLINE其他回滾段回滾段的大小為最大表的/
&#;        使用 COMMIT=N
&#;        使用ANALYZE=N

另外可以用單用戶模式導入
或者用管道模式直接導入導出來提高imp/exp的性能

管道的使用方法
在源機器之上(稱之為SRC)執行導出
mknod /dev/p_exp p
在目的機器之上(稱之為TRGT)執行導出
mknod /dev/p_imp p
在兩個機器上通過l s命令確保兩個管道都已被創建
) 將導入管道(在SRC之上)復制到導入管道(在TRGT之上)可以使用任何允
許遠程復制的命令(例如rcp)本例通過rsh使用dd命令
在TRGT之上
rsh src dd if=/dev/p_exp > /dev/p_imp
) 啟動導出進程
在SRC之上
exp userid=username file=/dev/p_exp full=y direct=y
) 啟動導入進程
在TRGT之上
imp userid=username file=/dev/p_imp buffer=???? full=y
     
另外一種增加導出/導入吞吐量的方法是使用單任務模式的導出和導入實用工具在UNIX上缺省情況下
imp/exp都是以雙任務模式鏈接的(換句話說創建了一個影子進程利用它隔離Oracle內核代碼和導出/導入代碼
又就是說這些代碼變成私有不再給共享了)使用單任務的導出/導入使用工具可以增加整個吞吐量大致為%
但是以單任務模式鏈接的實用工具會消耗更多的內存因為Oracle可執行代碼不再被所有後台進程和前台進程共享
單任務可執行代碼的名字與常規的雙任務可執行代碼一樣除了前者擁有st後綴之外(所以單任務的exp變為expst
單任務的imp變為impst)
單任務模式的實用工具需要通過下面的
命令顯式地鏈接
cd $ORACLE_HOME/rdbms/lib
make f ins_rdbmsmk expst     
make f ins_rdbmsmk impst
ins_rdbmsmk要根據oracle版本來決定

這個我自己也沒有試過大家可以測試一下把性能比較發上來;)

[ Last edited by fly on at : PM ]

From:http://tw.wingwit.com/Article/program/Oracle/201311/17642.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.