# 06ex1.3. Data Pump ________________________________________ # 1. Data Pump ________________________________________ 1 Oracle Data Pumpの概要 https://docs.oracle.com/cd/E16338_01/server.112/b56303/dp_overview.htm 2 データ・ポンプ・エクスポート https://docs.oracle.com/cd/E16338_01/server.112/b56303/dp_export.htm 前提 (考え方はWindowsでも同様) ```text サーバー上の読み書き可能なディレクトリとそれに対応するOracleディレクトリオブジェクトが必要 特権ユーザー(SYSTEM)ならデフォルトディレクトリオブジェクト(DATA_PUMP_DIR)で作業可能 同名の環境変数とは直接は関係ないため注意 実際のOS上の操作はdbmsの実行ユーザ(oracle)が行う。パーミッション/SELinuxが適切なこと metadata_onlyとは、DDL等のみ ``` ディレクトリオブジェクト関連の操作例 ```sql GRANT CREATE ANY DIRECTORY TO foo; CREATE DIRECTORY dpump_dir1 AS '/usr/apps/datafiles' GRANT READ, WRITE ON DIRECTORY dpump_dir1 TO foo; SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR1'; SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DATA_PUMP_DIR'; ``` expdp ```bash # Schemaモード(デフォルト)export例と補足 # 1. SYSスキーマはexport不可能 # 2. 自分以外のスキーマをexportする場合、DATAPUMP_EXP_FULL_DATABASEロールが必要 # 3. 各オブジェクトの所属スキーマのみが考慮され、依存関係は考慮されない # 4. INCLUDE/EXCLUDEフィルタ処理結果は、依存関係もまとめて処理される(テーブルを含めればそれに対する権限も含まれる) # 5. パラメータ書式はP1=ARG1 ARG2 P2=ARG1, ARG2 # 必ず=で左右を繋ぐ必要がある(=のすぐ左の値しかパラメータとして認識されない) # 実引数はカンマ区切り、空白区切りどちらでも良い # 6. ESTIMATE_ONLY=YESすると、出力サイズの想定だけ出せる # # powershellだとこんな感じ # expdp '\"a/a@orclpdb_local as sysdba\"' dumpfile=dkmeibo.dmp schemas=dkmeibo reuse_dumpfiles=y expdp system/dev@192.168.3.251/dev dumpfile=foo.dmp schemas=foo reuse_dumpfiles=y ``` impdp ```bash # 全体モード(デフォルト)import例 # 1. ソースが別のDBの場合、DATAPUMP_IMP_FULL_DATABASEロールが必要 # 2. INCLUDE/EXCLUDEフィルタ処理結果は、依存関係もまとめて処理される(テーブルを含めればそれに対する権限も含まれる) # ※ remap_schemaでは表領域やデータファイルは旧スキーマのまま # 別環境を生成する際など、DB_LINKに注意する必要があるため原則としてDB_LINKは自動で作らない # # powershellだとこんな感じ # impdp '\"a/a@orclpdb_local as sysdba\"' dumpfile=dkmeibo.dmp remap_schema=dkmeibo:dkmeibo2 impdp system/dev@192.168.3.251/dev dumpfile=foo.dmp remap_schema=foo:foo2 exclude=DB_LINK ```