■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ Data Pump(expdp/impdp)の使い方
■ 詳細は「 https://blogs.oracle.com/oracle4engineer/entry/data_pumpexpdpimpdp 」
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ Data Pump とは

・ Oracle Data Pump (以下、Data Pump) は Oracle Database 10g より導入されたテクノロジーです。

従来から利用されている、エクスポート/インポート(exp/impコマンド)と目的は同じく論理バックアップの取得、

データベース間のデータ移動を可能にします。

・ 従来のExp/Impは基本的にユーティリティ側で処理されるが、Data Pumpは、

データベース・サーバー側でジョブとして管理・処理されます。

得られる大きなメリットは、「パフォーマンス向上」と「管理性の向上」です。

■ Data Pumpの準備事項

1.「DIRECTORY OBJECT」について

Data Pumpコマンドは、DUMPファイルの生成場所をOS上のパスで指定できなく、

Oracleの「DIRECTORY OBJECT」で指定します。

export先のOracleのDIRECTORY状況を調べ、Export先のDIRECTORYを選定します。

・ SYSTEMユーザーで接続し、

・ 現在のDIRECTORY OBJECTを調査します。

SQL>select * from dba_directories

OWNER DIRECTORY_NAME DIRECTORY_PATH
——- ————————– ———- —————————————————————————
SYS ORACLE_HOME /
SYS ORACLE_BASE /
SYS OPATCH_LOG_DIR C:\app\Administrator\product\12.1.0\dbhome_1\QOpatch
SYS OPATCH_SCRIPT_DIR C:\app\Administrator\product\12.1.0\dbhome_1\QOpatch
SYS OPATCH_INST_DIR C:\app\Administrator\product\12.1.0\dbhome_1\OPatch
SYS DATA_PUMP_DIR C:\app\Administrator/admin/orcl/dpdump/
SYS XSDDIR C:\app\Administrator\product\12.1.0\dbhome_1\rdbms\xml\schema
SYS LOG_FILE_DIR C:\app\Administrator\product\12.1.0\dbhome_1\demo\schema\log\
SYS ORACLECLRDIR C:\app\Administrator\product\12.1.0\dbhome_1\bin\clr
SYS DATA_FILE_DIR C:\app\Administrator\product\12.1.0\dbhome_1\demo\schema\sales_history\
SYS MEDIA_DIR C:\app\Administrator\product\12.1.0\dbhome_1\demo\schema\product_media\
SYS ORACLE_OCM_CONFIG_DIR C:\app\Administrator\product\12.1.0\dbhome_1/ccr/state
SYS ORACLE_OCM_CONFIG_DIR2 C:\app\Administrator\product\12.1.0\dbhome_1/ccr/state
SYS XMLDIR C:\app\Administrator\product\12.1.0\dbhome_1\rdbms\xml
SYS GLOBAL_EXP_DIR d:\tmp
SYS SS_OE_XMLDIR C:\app\Administrator\product\12.1.0\dbhome_1\demo\schema\order_entry\
SYS SUBDIR C:\app\Administrator\product\12.1.0\dbhome_1\demo\schema\order_entry\/2002/Sep

※一般的に「GLOBAL_EXP_DIR」を活用します。

・ DUMPファイルの大きさを考慮して別の場所にする必要がある場合は、DIRECTORYを生成します。

SQL>create or replace directory TEST_DIR as ‘/home/test’;

SQL> grant read, write on directory TEST_DIR to SCOTT;(このDIRを別のユーザーが使用する場合)

2.deferred_segment_creation パラメータの設定値を確認します。

・ 下記のコマンドで確認します。

SQL> SHOW PARAMETERS DEFERRED

NAME TYPE VALUE
———————————— ———————- ——————————
deferred_segment_creation boolean TRUE

・ 上記のパラメータ値が「TRUE」の場合、マジェスティリポジトリ内に件数が「0」のテーブルはエクスポートされません。

・ パラメータ値が「TRUE」の場合、以下のコマンドを実行して「FALSE」に設定します。

SQL>ALTER SYSTEM SET DEFERRED_SEGMENT_CREATION = FALSE SCOPE = BOTH

・ 変更を確認します。

SQL> SHOW PARAMETERS DEFERRED

■ expDP

c:>expdp system/manager@orcl dumpfile=GLOBAL_EXP_DIR:maestro.dmp logfile=maestro_exp.log schemas=maestro

■ impDP

c:>impdp system/manager dumpfile=GLOBAL_EXP_DIR:maestro.dmp logfile=maestro_imp.log remap_schema=maestro:maestro remap_tablespace=majesty_data:users ignore=y transform=OID:n 

※ Import先のOracleのGLOBAL_EXP_DIRにdumpファイルがCOPYしておいてください。

※ remap_schema=fromuser:touser : Export時のユーザーとImportのゆーざーに合わせて修正してください。

※ Import先のOracleに既にtouserユーザーが存在する場合は、Drop、再CreateにしてからImportしてください。

または、別のユーザーを生成してImportしてください。

(下記のUser Drop&Create参照)

※ maestro User Drop&Create

SQL>conn system/manager@orcl

–Create user

SQL>drop user maestro cascade;

SQL>CREATE USER maestro IDENTIFIED BY “maestro”

   TEMPORARY TABLESPACE temp

   DEFAULT TABLESPACE users

   PROFILE DEFAULT

   ACCOUNT UNLOCK

   QUOTA UNLIMITED ON users;

SQL>GRANT “CONNECT” TO maestro;
SQL>GRANT “RESOURCE” TO maestro;
SQL>GRANT “SELECT_CATALOG_ROLE” TO maestro;
SQL>GRANT CREATE TYPE TO maestro;
SQL>GRANT CREATE TABLE TO maestro;
SQL>GRANT CREATE PROCEDURE TO maestro;
SQL>GRANT CREATE SEQUENCE TO maestro;
SQL>GRANT CREATE CLUSTER TO maestro;
SQL>GRANT CREATE DATABASE LINK TO maestro;
SQL>GRANT CREATE ANY JOB TO maestro;
SQL>GRANT CREATE SYNONYM TO maestro;
SQL>GRANT CREATE VIEW TO maestro;
SQL>GRANT ALTER SESSION TO maestro;
SQL>GRANT CREATE MATERIALIZED VIEW TO maestro;
SQL>GRANT GLOBAL QUERY REWRITE TO maestro;
SQL>ALTER USER maestro DEFAULT ROLE ALL;