!!!Oracle Database10g Data Pump [Oracle][Oracle Database10g] {{amazon 479810910X}} [Oracle Data Pump|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_overview.html#1367]概要 *Oracle Data Pumpを使用すると、データおよびメタデータをデータベース間で非常に高速に移動できます。 *Oracle Database 10g R1 以降でのみ使用できる。 !!構成要素 !コマンドライン・クライアント ,クライアント,内容 ,expdp,Data Pump Exportユーティリティを起動 ,impdp,Data Pump Importユーティリティを起動 *オリジナルのエクスポート・ユーティリティ(exp)およびインポート・ユーティリティ(imp)とほぼ同じユーザー・インタフェースが提供される !PL/SQLパッケージ *DBMS_DATAPUMP(Data Pump APIとも呼ばれます) *DBMS_METADATA(メタデータAPIとも呼ばれます) ![ディレクトリ・オブジェクト|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_overview.html#3819] *Data Pumpは、クライアント・ベースではなく、サーバー・ベースであるため、ダンプ・ファイル、ログ・ファイルおよびSQLファイルには、サーバー・ベースのディレクトリ・パスを基準としてアクセスします *Data Pumpでは、ディレクトリ・パスをディレクトリ・オブジェクトとして指定する必要があります *ディレクトリ・オブジェクトは、ファイル・システムのディレクトリ・パスに名前をマップします *CREATE ANY DIRECTORY権限を持つユーザーがディレクトリ・オブジェクトを作成する必要があります ::ディレクトリ・オブジェクトを作成 *ディレクトリ /home/oracle/dpump にマップされるディレクトリ・オブジェクト dpump_dir1を作成する SQL> create directory dpump_dir1 as '/home/oracle/dpump'; Directory created. *出力するスキーマーのユーザに書き込み権限を与えておく SQL> grant read,write on directory dpump_dir1 to exam; Grant succeeded. !![Data Pump Exportユーティリティ|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_export.html] *ダンプ・ファイル・セットと呼ばれる一連のオペレーティング・システム・ファイルにデータおよびメタデータをアンロードするためのユーティリティ *ダンプ・ファイル・セットは、Data Pump Importユーティリティによってのみインポートできる !エクスポートモード ,モード,パラメータ,内容 ,全体エクスポート・モード,FULL,データベース全体をアンロード、EXP_FULL_DATABASEロールが必要 ,スキーマ・モード,SCHEMAS,デフォルトのエクスポート・モード、EXP_FULL_DATABASEロールを所有していない場合は、自分のスキーマのみをエクスポートできる ,表モード,TABLES,指定した表、パーティションおよびそれらの依存オブジェクトのみがアンロードされる ,表領域モード,TABLESPACES,指定した表領域内に存在する表のみがアンロードされる ,トランスポータブル表領域モード,TRANSPORT_TABLESPACES,指定した表領域内にある表のメタデータ(およびその表の依存オブジェクト)のみがアンロードされます。これによって、表領域データ・ファイルを別のOracleデータベースにコピーし、トランスポータブル表領域インポートを使用して、データベースに取り込むことができる。EXP_FULL_DATABASEロールが必要 !表モードエクスポートの実行 *examスキーマの testテーブルをエクスポートする *複数テーブルはカンマで区切る $ expdp exam/abc123 TABLES=test DUMPFILE=dpump_dir1:table.dmp NOLOGFILE=y Export: Release 10.2.0.1.0 - Production on Saturday, 11 July, 2009 8:47:48 Copyright (c) 2003, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Starting "EXAM"."SYS_EXPORT_TABLE_01": exam/******** TABLES=test DUMPFILE=dpump_dir1:table.dmp NOLOGFILE=y Estimate in progress using BLOCKS method... Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 64 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . exported "EXAM"."TEST" 5.242 KB 2 rows Master table "EXAM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for EXAM.SYS_EXPORT_TABLE_01 is: /home/oracle/dpump/table.dmp Job "EXAM"."SYS_EXPORT_TABLE_01" successfully completed at 08:48:31 !表モードエクスポートの実行(Enterprise Managerを使用する) ::メンテナンス - 行移動 {{ref_image ora_dpump01.jpg}} ::ウィザードに従いモードを選択 {{ref_image ora_dpump02.jpg}} ::先ほど作成した、ディレクトリオブジェクトが確認できる {{ref_image ora_dpump03.jpg}} ::PL/SQLが生成されるので、実行する {{ref_image ora_dpump04.jpg}} !![Data Pump Importユーティリティ|http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_import.html] *エクスポート・ダンプ・ファイル・セットをターゲット・システムにロードするためのユーティリティ *ダンプ・ファイルを介さずに、ソース・データベースから直接ターゲット・データベースをロードするために使用することもできます。これによって、エクスポートおよびインポート操作を同時に実行でき、操作にかかる時間を最小限にできます。これはネットワーク・インポートと呼ばれます。 !インポートモード ,モード,パラメータ,内容 ,全体エクスポート・モード,FULL,ソースの全内容がターゲット・データベースにロードされる ,スキーマ・モード,SCHEMAS,指定されたスキーマが所有しているオブジェクトのみがロードされる ,表モード,TABLES,指定した表、指定した表、パーティションおよびそれらの依存オブジェクトのみがロードされる ,表領域モード,TABLESPACES,指定した表領域内のすべてのオブジェクトが、依存オブジェクトとともにロードされる ,トランスポータブル表領域モード,TRANSPORT_TABLESPACES,指トランスポータブル表領域エクスポート・ダンプ・ファイル・セットまたは別のデータベースからのメタデータがロードされます。 !表モードインポートの実行 ::testテーブルを削除する SQL> select * from exam.test; ID NAME ---------- ---------- 4 jkl 5 mno SQL> drop table exam.test; Table dropped. SQL> purge recyclebin; Recyclebin purged. SQL> select * from exam.test; select * from exam.test * ERROR at line 1: ORA-00942: table or view does not exist ::impdpコマンドの実行 *複数テーブルはカンマで区切る $ impdp exam/north123 directory=dpump_dir1 DUMPFILE=table.dmp TABLES=test Import: Release 10.2.0.1.0 - Production on Saturday, 11 July, 2009 9:18:33 Copyright (c) 2003, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Master table "EXAM"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded Starting "EXAM"."SYS_IMPORT_TABLE_01": exam/******** directory=dpump_dir1 DUMPFILE=table.dmp TABLES=test Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/TABLE_DATA . . imported "EXAM"."TEST" 5.242 KB 2 rows Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS Job "EXAM"."SYS_IMPORT_TABLE_01" successfully completed at 09:18:50 ::データの確認 SQL> select * from exam.test; ID NAME ---------- ---------- 4 jkl 5 mno