お手軽データバックアップ方法としてや、断片化対策としても用いられています。
「Data Pump(expdp/impdp)の使い方~エクスポート/インポート、データ移動、論理バックアップ」
https://blogs.oracle.com/oracle4engineer/entry/data_pumpexpdpimpdp
「Oracleにおける断片化の種類と解消方法~表領域、セグメント、エクステント、ブロック、テーブル、索引」
https://blogs.oracle.com/oracle4engineer/entry/column_table_fragmentation
ただ先代まで使われていたEXP/IMPコマンドとの互換はなく、
おまけにお作法が面倒くさい。
下記ページにコマンドの使い方は載っていたのですが、
バッチを組むには少し厳しい情報量だったので少し補足しますよ!
「Oracleでexpdp/impdpを使ってみる」
http://dbtuning.seesaa.net/article/142143213.html
1.下ごしらえ
コマンドプロンプトよりSQLPLUSに入って、以下の設定を行います。
EXPファイルを吐き出す場所を予めOracleさんに認識させる必要があります。
あと、当サイトオリジナル要素として、
ストリームプールの明示指定をおススメします!
たまにOracleさんがエクスポートに使うメモリ領域確保に失敗するので。
…結構ホラーですよ。バックアップが取れてなくて、ある日システムが壊れたら。
sqlplus STUDY/STUDY
set linesize 2000
--ユーザSTUDYの権限を確認(DBAあればよし)
SELECT * FROM session_roles;
--エクスポートファイルを吐き出す場所を指定
CREATE DIRECTORY DumpDir as 'C:\★EXPファイル出力先フォルダ指定★';
SELECT * FROM DBA_DIRECTORIES;
--稀にEXPDPに用いるメモリ領域確保失敗するエラーを回避
--下記コマンドで失敗したら、scope=spfileに変えてDB再起動必要
alter system set streams_pool_size=48M scope=both;
exit
2.エクスポート
バッチを意識して、エクスポートファイルとログは日付フォルダに移動。
エクスポートする場所にすでに同名のファイルがあると失敗します!!
rem エクスポート先のフォルダを指定
cd C:\★EXPファイル出力先フォルダ指定★
rem 実行時の日時のフォルダを作成
set DIRNAME=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%_expdp
mkdir %DIRNAME%
rem エクスポート用コマンド
expdp system/manager dumpfile=DumpDir:expdp.dmp logfile= DumpDir:expdp.log schemas=STUDY
rem ダンプファイルを移動
move expdp.dmp %DIRNAME%
move expdp.log %DIRNAME%
3.インポート
こちらは非バッチかと思いますが、備えは必要なので。
ポイントは「table_exists_action=REPLACE」です。
これのおかげで、1度テーブルなどのオブジェクトをDROPしなくても、
自動で上書きしてくれます。これは昔のEXPコマンドとは違うそうな。
rem インポート元のフォルダを指定
cd C:\★EXPファイル読み込み元フォルダ指定★
rem インポート用コマンド
impdp system/manager dumpfile=DumpDir:expdp.dmp logfile= DumpDir:impdp.log schemas=STUDY table_exists_action=REPLACE
この手の情報は、大方は大手ブログに書かれているのに、
何か困った時の情報となると途端に不足しますよね。
そのために保守サポートサービスに加入するんでしょうが、
社会全体でつまらん仕事を減らしていくためには、ナレッジ共有が大切なんでしょうね。
困ったときはお互い様ということで、
1人でも多くの技術者さんの情報発信をお待ちしてますよ!
0 件のコメント:
コメントを投稿