# 建立管道
mknod /tmp/exp_pipe p
# 啟動壓縮進程,從管道讀取並寫入壓縮檔
compress < /tmp/exp_pipe > export.dmp.Z &
# exp 寫入管道
exp file=/tmp/exp_pipe ... &
管道驻留記憶體,繞過檔案系統大小限制;壓縮可將 DMP 體積降低 60-80%。
exp file=/dev/rmt/0m volsize=4G
imp file=/dev/rmt/0m volsize=4G
volsize 指定卷大小,支援多卷自動切換。
exp file=/dev/rdsk/c0t3d0s0 volsize=4G
繞過檔案系統,直接寫入區塊裝置。
mknod /tmp/exp_pipe p
compress < /tmp/exp_pipe | dd of=/dev/rmt/0m obs=64k &
exp file=/tmp/exp_pipe ... &
邊導出、邊壓縮、邊寫帶,磁帶寫入量大幅減少,I/O 時間顯著降低。
繞過 SQL 層直接讀取資料塊,效能提升 30%+。需重新連結專用執行檔:
make -f $ORACLE_HOME/rdbms/lib/oracle.mk expst
make -f $ORACLE_HOME/rdbms/lib/oracle.mk impst
嚴重警告:使用 expst/impst 期間絕對不能有其他用戶連線資料庫,否則可能導致資料庫損壞。
dd if=/tmp/exp_pipe of=/dev/null 預估 DMP 大小(以 512-byte block 為單位)。imp SHOW=Y 驗證 DMP 完整性。