36 Oracle XML DBデータのエクスポートとインポート
Oracle Data Pumpを使用して、Oracle XML DBで使用するXMLType
表をエクスポートおよびインポートできます。
注意:
元のエクスポート・ユーティリティ(exp
)およびインポート・ユーティリティ(imp
)を使用すると、Oracle Database 11gより前のデータベース・リリースにデータを移行できます。ただし、これらの元のユーティリティは、バイナリXMLとして格納されているXMLType
データの使用をサポートしていません。
- XMLType表のエクスポートおよびインポートの概要
Oracle XML DBは、XML Schemaに基づくかどうかに関係なく、XMLデータを格納するXMLType
表および列のエクスポートおよびインポートをサポートします。 - Oracle XML DBリポジトリのエクスポート/インポートの制限事項
登録されたXML Schemaに基づいたOracle XML DBリポジトリ・リソースのデータを格納する表をエクスポートまたはインポートする場合は、そのXMLデータのみがエクスポートされます。リポジトリ構造はエクスポート中に失われるため、これらの表がインポートされたときは階層に対応していません。 - エクスポート/インポートの構文および例
コマンドexpdp
およびimpdp
とXMLType
データを使用する場合のガイドラインおよび例を示します。
36.1 XMLType表のエクスポートおよびインポートの概要
Oracle XML DBは、XML Schemaに基づくかどうかに関係なく、XMLデータを格納するXMLType
表および列のエクスポートおよびインポートをサポートします。
Oracle Data Pumpにより、データベース間でデータとメタデータを高速で移動できます。Oracle Data Pumpを使用するには、2つのモード(トランスポータブル表領域モードとトランスポータブル表領域以外のモード)があります。
トランスポータブル表領域モードでは、XMLType
データに関して、XMLType
記憶域モデルを変更できないという制約があります。
XMLデータは、他のデータベース・オブジェクトの場合と同様に、エクスポート側サーバーのキャラクタ・セットでエクスポートされます。インポート中、このデータはインポート側サーバーのキャラクタ・セットに変換されます。
Oracle Data Pumpには、expdp
およびimpdp
という2つのコマンドライン・クライアントがあり、それぞれデータ・ポンプ・エクスポート・ユーティリティおよびデータ・ポンプ・インポート・ユーティリティを起動します。expdp
およびimpdp
クライアントは、PL/SQLパッケージDBMS_DATAPUMP
で提供されているプロシージャを使用して、コマンドラインに入力されたパラメータを渡してエクスポートおよびインポートのコマンドを実行します。これらのパラメータにより、完全なデータベースまたはデータベースのサブセットの、データおよびメタデータのエクスポートとインポートが可能になります。
データ・ポンプ・エクスポート・ユーティリティおよびインポート・ユーティリティ(それぞれコマンドexpdp
およびimpdp
により起動)は、元のエクスポート・ユーティリティ(exp
)およびインポート・ユーティリティ(imp
)と外観は似ていますが、完全に別のものです。
データ・ポンプ・エクスポート・ユーティリティ(expdp
で起動)は、ダンプ・ファイル・セットと呼ばれるオペレーティング・システムのファイル・セットにデータおよびメタデータをアンロードします。ダンプ・ファイル・セットは、データ・ポンプ・インポート・ユーティリティ(impdp
を使用して起動)でのみインポートできます。
Oracle XML DBは、XML Schemaに基づくかどうかに関係なく、XMLデータを格納するXMLType
表および列のエクスポートおよびインポートをサポートします。表がXML Schemaに基づいている場合、表のデータを定義するために使用されたXML Schemaに依存します。オブジェクト・リレーショナル記憶域の場合、このXML Schemaに、データを格納するために使用されたSQLオブジェクト型への依存関係があることもあります。
そのため、XML Schemaに基づくXMLType
表を持つユーザーをエクスポートすると、次もエクスポートされます。
-
SQLオブジェクト型(オブジェクト・リレーショナル記憶域が使用されている場合)
-
XMLスキーマ
-
XML表
XMLType
記憶域形式(オブジェクト・リレーショナルまたはバイナリXML)に関係なく、このデータをエクスポートおよびインポートできます。ただし、Oracle Data Pumpはテキスト形式のXMLデータまたはバイナリXMLデータのみをエクスポートまたはインポートします。このため、XMLType
のオブジェクト・リレーショナル記憶域に使用される、基礎となる表および列はエクスポートされません。それらの表および列は、バイナリ形式に変換され、自己記述的なバイナリXMLデータとしてエクスポートされます。
注意:
Oracle Data Pump for Oracle Database 11gリリース1(11.1)は、XML Schema、XML Schemaに基づくXMLType
列またはバイナリXMLデータをリリース11.1より前のバージョンにエクスポートする機能をサポートしていません。
XMLType
記憶域モデルに関係なく、ダンプ・ファイルの形式はテキストまたは自己記述的なバイナリXMLにトークン・マップ・プリアンブルを加えたもののいずれかになります。デフォルトでは、自己記述的なバイナリXMLが使用されます。
XMLType
データはXMLデータとしてエクスポートおよびインポートされるため、ソース・データベースおよびターゲット・データベースはそのデータに対して異なるXMLType
記憶域モデルを使用できます。つまり、ある方式でXMLType
データが格納されたデータベースからデータをエクスポートし、それとは異なる方式でXMLType
データが格納されたデータベースへインポートできます。
注意:
XMLType
記憶域モデルを使用しているかどうかにかかわらず、オプションtable_exists_action=append
を指定して、同じダンプ・ファイルからXMLType
表に複数回インポートしないでください。XMLType
表内の列は常に一意のオブジェクト識別子を使用してエクスポートおよびインポートされるため、これを行うと一意制約違反エラーが発生します。
table_exists_action
の詳細は、Oracle Databaseユーティリティを参照してください。
36.2 Oracle XML DBリポジトリのエクスポート/インポートの制限事項
登録されたXML Schemaに基づいたOracle XML DBリポジトリ・リソースのデータを格納する表をエクスポートまたはインポートする場合は、そのXMLデータのみがエクスポートされます。リポジトリ構造はエクスポート中に失われるため、これらの表がインポートされたときは階層に対応していません。
登録されたXML Schemaに基づくOracle XML DBリポジトリ・リソースの場合、XMLデータを格納するXMLType
表はエクスポートおよびインポートできます。
ただし、エクスポートされるのはXMLデータのみです。リポジトリ構造は、エクスポート中に失われます。フォルダ階層、行レベルのセキュリティ(RLS)ポリシーおよびパス索引トリガーの関係は、階層対応表にエクスポートされません。これらの表のインポート時には階層対応していません。
36.3 エクスポート/インポートの構文および例
コマンドexpdp
およびimpdp
とXMLType
データを使用する場合のガイドラインおよび例を示します。
ここに示す例では、コマンドライン・コマンドexpdp
およびimpdp
を使用します。このようなコマンドをユーザー名およびコマンド・パラメータとともに発行すると、パスワードの入力を要求されます。この例では、この入力要求は示されていません。
Oracle Data Pumpを使用したエクスポートおよびインポートはOracle Databaseユーティリティで説明されています。
- 表モード・エクスポート/インポートの実行
表モード・エクスポートおよび表モード・インポート、ダンプ・ファイルの送受信の実行の例をそれぞれ示します。 - スキーマ・モード・エクスポート/インポートの実行
ここで示す例では、スキーマ・モード・エクスポートおよびインポートを実行します。スキーマ
・モード・エクスポートを実行する際には、ロールEXP_FULL_DATABASE
が割り当てられている場合、データベース・スキーマ、データベース・スキーマ定義、およびそのデータベース・スキーマのシステム権限をエクスポートできます。
36.3.1 表モード・エクスポート/インポートの実行
表モード・エクスポートおよび表モード・インポート、ダンプ・ファイルの送受信の実行の例をそれぞれ示します。
XMLType
表は、それを定義するために使用されたXML Schemaに依存します。同様に、そのXML Schemaはそれ用に作成または指定されたSQLオブジェクト型に依存します。XMLType
表をインポートするには、対応するXML SchemaおよびSQLオブジェクト型が存在する必要があります。
TABLE
モード・エクスポートを使用すると、表関連のメタデータおよびデータのみがエクスポートされます。このデータを正常にインポートできるようにするには、関連するXML Schemaとオブジェクト型が作成済であることを確認する必要があります。
この項に示す例では、次のようなデータベースを使用していることを前提としています。
-
スキーマ
user23
を使用したデータベース -
バイナリXMLとして格納されている
XMLType
列を持つ表user23.tab41
-
READ
およびWRITE
権限が、expdp
またはimpdp
を実行しているユーザーに対して与えられているディレクトリ・オブジェクトdpump_dir
例36-1は、TABLES
パラメータを使用して指定した表モード・エクスポートを示しています。これにより表tab41
がダンプ・ファイルtab41.dmp
にエクスポートされます。
注意:
表モードでは、expdp
コマンドでスキーマ接頭辞を指定しないと、エクスポート側のスキーマがデフォルトで使用されます。
例36-2は表モード・インポートを示しています。これにより表tab41
がダンプ・ファイルtab41.dmp
からインポートされます。
このインポートの際にtab41
という名前の表がすでに存在している場合は、table_exists_action = append
と指定すると、その表に行が追加されます。パラメータ値append
を使用すると、データは必ず新しい領域にロードされます。既存の領域が再利用されることはありません。このため、ロード操作後にはデータの圧縮が必要になることがあります。
関連項目:
Oracle Data Pumpおよびそのコマンドライン・クライアントexpdp
およびimpdp
の詳細は、Oracle Databaseユーティリティを参照してください。
例36-1 表モードでのXMLTypeデータのエクスポート
expdp system directory=dpump_dir dumpfile=tab41.dmp tables=user23.tab41
例36-2 表モードでのXMLTypeデータのインポート
impdp system tables=user23.tab41 directory=dpump_dir dumpfile=tab41.dmp table_exists_action=append
親トピック: エクスポート/インポートの構文および例
36.3.2 スキーマ・モード・エクスポート/インポートの実行
ここで示す例では、スキーマ・モード・エクスポートおよびインポートを実行します。スキーマ
・モード・エクスポートを実行する際には、ロールEXP_FULL_DATABASE
が割り当てられている場合、データベース・スキーマ、データベース・スキーマ定義、およびそのデータベース・スキーマのシステム権限をエクスポートできます。
この項に示す例では、次のようなデータベースを使用していることを前提としています。
-
ユーザー
x4a
が表po2
を作成済。 -
ユーザー
x4a
が登録されたXML Schemaipo
を持っており、そのXML SchemaがOrdered Collection Tableitem_oct2
およびsitem_nt2
を作成済。
ユーザーx4a
は、例36-3に示すようにして表po2
を作成します。
その後、例36-4に示すように表po2
がデータが移入され、エクスポートされます。
例36-4では、次のものすべてがエクスポートされます。
-
XML Schema、
ipo
の登録時に生成されたすべてのデータ型 -
XML Schema
ipo
。 -
XML Schema、
ipo
の登録時に生成された表po2
およびOrdered Collection Table(OCT)、item_oct2
およびsitem_nt2
-
これらすべての表にあるすべてのデータ
例36-5は、x4a.dmp
内のすべてのデータをユーザーx4a
がすでに存在する他のデータベースにインポートします。
例36-6は例36-5と同じ動作をしますが、ユーザーx4a
からユーザーquine
へのデータベース・スキーマの再マップも行います。
例36-6は、x4a.dmp
内のすべてのデータ(ユーザーx4a
のデータベース・スキーマからエクスポートしたデータ)を、データベース・スキーマquine
にインポートします。スキーマを再マップするには、ユーザーx4a
がローカル・データベース上でIMP_FULL_DATABASE
ロールを、ソース・データベース上でEXP_FULL_DATABASE
ロールを付与されている必要があります。REMAP_SCHEMA
は、すべてのオブジェクトをソース・スキーマからターゲット・スキーマにロードします。
注意:
XML Schemaをエクスポート元と同じデータベースにインポートするときに、このXML Schemaがインポート時にもOracle XML DBに登録されている場合、impdp
パラメータtransform=oid:n
も指定しないかぎり、remap_schema
を使用しないでください。パラメータtransform
の詳細は、Oracle Databaseユーティリティを参照してください。
例36-3 表po2の作成
CREATE TABLE po2 (po XMLType) XMLTYPE COLUMN po XMLSCHEMA "ipo.xsd" ELEMENT "purchaseOrder" VARRAY po.XMLDATA."items"."item" STORE AS TABLE item_oct2 ((PRIMARY KEY(NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$))) NESTED TABLE po.XMLDATA."shippedItems"."item" STORE AS sitem_nt2;
例36-4 スキーマ・モードでのXMLTypeデータのエクスポート
expdp x4a directory=tkxm_xmldir dumpfile=x4a.dmp
例36-5 スキーマ・モードでのXMLTypeデータのインポート
impdp x4a directory=tkxm_xmldir dumpfile=x4a.dmp
例36-6 スキーマ・モードでのXMLTypeデータのインポート、スキーマの再マップ
impdp x4a directory=tkxm_xmldir dumpfile=x4a.dmp remap_schema=x4a:quine
親トピック: エクスポート/インポートの構文および例