オラクルシルバーを勉強してData Pumpという機能をはじめて知りました。
まー、関係ないやー。と思っていたのですが、
業務で高速にDBエクスポートを行いたい事案があったので、
少し調べてみました。
【1】
・exp/impユーリティが非推奨になっており、
今後はData Pumpに移行されていく。
【2】
・exp/impユーリティが存在する端末で実行できたのに対し、
Data PumpではDBサーバ上で実行するようです。
当然出力されるファイルもDbサーバ上となります。
【3】
・exp/impユーリティに比べてエクスポート/インポートが高速に実行可能。
【2】に関しては、使い悪さしか思い浮かばないです。
サーバマシンに対して気軽にエクスポートできなくなったといえます。
【前提条件】
まとめ:Oracle 11g XEでテスト環境を作成を参照し、
テスト環境の作成を行っておくこと。
Oracleの公式ドキュメントを参考にしています。
英語ですが、結構詳しく書いているのでお勧めです。
それでは始めます。
端末を起動して下記のコマンドを打ち、フォルダを作成します。
mkdir /usr/lib/oracle/xe/tmp
SQL Plusを起動し、SYSTEMユーザでログインします。
sqlplus SYSTEM/password
ディレクトリオブジェクトを作成します。
CREATE OR REPLACE DIRECTORY dmpdir AS ‘/usr/lib/oracle/xe/tmp’;
作成したディレクトリオブジェクトに対して、
読み込みと書き込みの権限をtestユーザに与えます。
GRANT READ,WRITE ON DIRECTORY dmpdir TO test;
フォルダの権限を変更する。
chmod 777 /usr/lib/oracle/xe/tmp/
※ここではまりました。
フォルダの権限とかオラクルを実行している
ユーザとかよくわからなかったので苦労しました。
本来ならセキュリティ上ちゃんとしないといけないのでしょうが、
今回は勘弁してください。
Data Pumpのエクスポートコマンドを実行します。
expdp SYSTEM/password SCHEMAS=hr DIRECTORY=dmpdir DUMPFILE=schema.dmp LOGFILE=expschema.log
これで実行できるはずです。