8,882 バイト追加
、 2020年2月15日 (土) 07:34
==Oracle Database10g Data Pump==
[Oracle][Oracle Database10g]
{{amazon|479810910X}}
[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_overview.html#1367 Oracle Data Pump]概要
*Oracle Data Pumpを使用すると、データおよびメタデータをデータベース間で非常に高速に移動できます。
*Oracle Database 10g R1 以降でのみ使用できる。
===構成要素===
====コマンドライン・クライアント====
{|class="wikitable"
!クライアント
!内容
|-
|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.
===[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_export.html Data Pump Exportユーティリティ]===
*ダンプ・ファイル・セットと呼ばれる一連のオペレーティング・システム・ファイルにデータおよびメタデータをアンロードするためのユーティリティ
*ダンプ・ファイル・セットは、Data Pump Importユーティリティによってのみインポートできる
====エクスポートモード====
{|class="wikitable"
!モード
!パラメータ
!内容
|-
|全体エクスポート・モード
|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を使用する)====
=====メンテナンス - 行移動=====
[[File:0942_ora_dpump01.jpg]]
=====ウィザードに従いモードを選択=====
[[File:0943_ora_dpump02.jpg]]
=====先ほど作成した、ディレクトリオブジェクトが確認できる=====
[[File:0944_ora_dpump03.jpg]]
=====PL/SQLが生成されるので、実行する=====
[[File:0945_ora_dpump04.jpg]]
===[http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19211-01/dp_import.html Data Pump Importユーティリティ]===
*エクスポート・ダンプ・ファイル・セットをターゲット・システムにロードするためのユーティリティ
*ダンプ・ファイルを介さずに、ソース・データベースから直接ターゲット・データベースをロードするために使用することもできます。これによって、エクスポートおよびインポート操作を同時に実行でき、操作にかかる時間を最小限にできます。これはネットワーク・インポートと呼ばれます。
====インポートモード====
{|class="wikitable"
!モード
!パラメータ
!内容
|-
|全体エクスポート・モード
|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