Oracleのエクスポート、インポートで利用するDataPumpについてまとめた記事です。
基本的な部分はこれで十分抑えられると思います。
前回は経験によるトラブルシューティングの記事を書きましたが、実際の使い方の記事を書いていなかったので、今回記事にまとめてみました。
必要に応じて、追記、アップデートはしていければと思います。
前提の設定
DataPumpの利用をする際の初期準備についてここでは記載しようと思います。
Oracleで、dumpファイルを出力するディレクトリに対して、ディレクトリオブジェクトの作成を行わないといけません。
DATAPUMP用のディレクトリオブジェクトの作成
CREATE DIRECTORY DATAPUMP_DIR1 AS ‘/home/oracle/oradata/datapump_dir’;
そして、ディレクトリオブジェクトを指定したら、実行したいユーザに権限を付与する必要があります。
ユーザに対してディレクトリへのRead、Write権限を与える
GRANT READ, WRITE ON DIRECTORY datapump_dir TO scott;
この2つは、セットで必要になる為、必ず実施するようにしましょう。
エクスポート(expdp)
実際、expdmpを実施する場合はこんな感じ。
(EMP表、DEPT表は一般的なサンプルです。置き換えてくださいね。)
$ expdp scott/tiger tables=emp,dept directory=datapump_dir
モードの種類
モード | 説明 | パラメータ |
フル | DB全体 | FULL=y |
スキーマ | 指定したスキーマ全体 | SCHEMAS=schema |
テーブル | 指定したテーブル全体 | TABLES=table |
テーブルスペース | 指定したテーブルスペース全体 | TABLESPACES=tablespace |
例1 フルモード
expdp scott/tiger full=y
例2 テーブルモード
expdp scott/tiger dumpfile=exp.dmp tables=emp,dept
エクスポートの対象となるオブジェクトを細かく指定する
expdp scott/tiger include=index
フラッシュバックモード
パラメータファイルの中身(parfile.txt)
cat parfile.txt
FLASHBACK_TIME=“TO_TIMESTAMP('2021/06/10 08:00','YYYY/MM/DD HH:MI')”
パラメータファイルを指定して実行
expdp scott/tiger parfile=parfile.txt
flashback_scn の指定も可能
expdp scott/tiger flashback_scn=234567
エクスポートファイルをパラレルで行う
expdp scott/tiger parallel=3 dumpfile=datapump_dir1:expdata%U.dmp,datapump_dir2%U.dmp
ダンプファイルの作成にどのくらいの時間がかかるか、またどのくらいの容量となるか見積もりを行う
expdp scott/tiger full=y estimate_only=y
BLOCKS ブロックサイズにオブジェクトのブロック数をかけて見積もり
expdp scott/tiger tables=test estimate=blocks estimate_only=y
STATISTICS 統計情報を元に見積もります
expdp scott/tiger tables=test estimate=statistics estimate_only=y
インポート(impdp)
インポートしたいファイルを指定する。
$ impdp scott/tiger tables=emp,dept
パラメータを指定することで、対象を絞ってインポートが可能。
$ impdp scott/tiger include=index
DB Link越しにインポート
impdp scott/tiger tables=emp,dept directory=datapump_dir network_link=scott.jp.oracle.com
REMAP_SCHEMA export時と違うスキーマにimportする
impdp scott/tiger directory=taro_dir dumpfile=exp.dmp remap_schema=scott:taro
REMAP_TABLESPACE export時と違うテーブルスペースにimportする
impdp scott/tiger directory=taro_dir dumpfile=exp.dmp remap_tablespace=users:taro_TS
REMAP_DATAFILE export時と違うデータファイルでimportする
impdp system/manager directory=taro_dir dumpfile=exp.dmp remap_datafile='/home/users.dbf:/home/taro/users.dbf'
メモとして残す意味でもこの記事を作りました。
ちょっとお試し的な部分も含め作成しています。
少しずつではありますが、コンテンツを増やしていきたいと思います。。。
以前、うっかりやってしまうDatapumpの操作についての記事を書きました。
興味ある方はこちらを見てください。