OracleDatabaseのimport/exportで時間と手間を省く
Data Pumpユーティリティは10g以前は使えないので、import/exportを使うことになる。
今回はそのtipsをlogろう。(unix,linux限定だけど;)
10g以前のOracleからのデータ移行って仕事としては結構あるんだよね...
このtipsは、exp時、名前付きパイプを使ってディスクを介さずオンメモリでexp/impしてしまおうというものだ。
どちかというと、データベースリンクが許されない異システム間(例えば基幹系と分析系)のデータ移送バッチなどに組み込むと生きるtips。
エクスポート
mkfifo pipe # パイプを作る gzip < pipe > user_name@db_name.dmp.gz & # パイプをgzipにバックグラウンドでリダイレクト exp user_name/user_password@db_name file=pipe log=exp.user_name@db_name.dmp.log direct=y # パイプに対してexp
インポート
mkfifo pipe # パイプを作る gunzip < user_name@db_name.dmp.gz > pipe & # gunzipの出力をパイプにバックグラウンドでリダイレクト imp userid=\'sys/sys_password@db_name as sysdba\' file=pipe log=imp.user_name@db_name.dmp.log ignore=y feedback=10000 fromuser=user_name touser=user_name # パイプからimp
exp時の書き出しとgzipのI/O、imp時のgunzipの書き出しとimpのI/Oがかなり短縮されます。