■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■ 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;