この章では、Oracle XML DBで使用するために、Oracle Data Pumpを使用してXMLType
表をエクスポートおよびインポートする方法を説明します。
注意: 元のエクスポート・ユーティリティおよびインポート・ユーティリティは、リリース11.1より前のバージョンへデータを移行するためにOracle Database 11gリリース1(11.1)でもサポートされています。 |
この章では、次の項目について説明します。
Oracle Data Pumpテクノロジにより、1つのデータベースから他のデータベースへのデータおよびメタデータの高速移動が可能になります。Oracle Data Pumpには、expdp
およびimpdp
という2つのコマンドライン・クライアントがあり、それぞれデータ・ポンプ・エクスポート・ユーティリティおよびデータ・ポンプ・インポート・ユーティリティを起動します。expdp
およびimpdp
クライアントは、PL/SQLパッケージDBMS_DATAPUMP
で提供されているプロシージャを使用して、コマンドラインに入力されたパラメータを渡してエクスポートおよびインポートのコマンドを実行します。これらのパラメータにより、完全なデータベースまたはデータベースのサブセットの、データおよびメタデータのエクスポートとインポートが可能になります。
新しいデータ・ポンプ・エクスポート・ユーティリティおよびインポート・ユーティリティ(それぞれコマンドexpdp
およびimpdp
により起動)は、元のエクスポート・ユーティリティ(exp
)およびインポート・ユーティリティ(imp
)と外観は似ていますが、完全に別のものです。
関連項目: 元のExportユーティリティおよびImportユーティリティを使用する場合の詳細は、『Oracle Databaseユーティリティ』の「オリジナルのエクスポートおよびインポート」を参照してください。 |
データ・ポンプ・エクスポート・ユーティリティ(expdp
で起動)は、ダンプ・ファイル・セットと呼ばれるオペレーティング・システムのファイル・セットにデータおよびメタデータをアンロードします。ダンプ・ファイル・セットは、データ・ポンプ・インポート・ユーティリティ(impdp
で起動)でのみインポートできます。
Oracle XML DBは、XMLデータを格納するXMLType
表および列のエクスポートおよびインポートをサポートします。
XMLType
記憶域形式(構造化、非構造化またはバイナリXML)に関係なく、このデータをエクスポートおよびインポートできます。ただし、データ・ポンプはテキスト形式のXMLデータまたはバイナリXMLデータのみをエクスポートまたはインポートします。このため、XMLType
の構造化記憶域に使用される、基礎となるオブジェクト・リレーショナル表および列はエクスポートされません。それらの表および列は、バイナリ形式に変換され、自己記述的なバイナリXMLデータとしてエクスポートされます。CLOB
インスタンス(非構造化記憶域)として格納されているXMLType
データはテキスト形式でエクスポートされます。
注意: Oracle Data Pump for Oracle Database 11gリリース1(11.1)は、XML Schema、XML Schemaに基づくXMLType 列またはバイナリXMLデータをリリース11.1より前のバージョンにエクスポートする機能をサポートしていません。 |
エクスポート形式に関係なく、ダンプ・ファイルの形式はCLOB
または自己記述的なバイナリXMLにトークン・マップ・プリアンブルを加えたもののいずれかになります。Oracle Data Pumpがこのデータをダンプ・ファイルに格納する方法は、エクスポート・パラメータdata_options
の値に依存します(このパラメータに対して唯一有効な値は、xml_clobs
です)。エクスポート・コマンドラインでこの値を指定すると、XMLType
データがすべてダンプ・ファイルにテキスト形式で格納されます。expdp
コマンドでxml_clobs
パラメータを指定しない場合、表内のXMLType
列の形式によってダンプ・ファイル内のデータの形式が決定されます。表36-1は、表内のXMLType
列とそれに対応するダンプ・ファイルの形式を示しています。
表36-1 表内のXMLType列の形式とそれに対応するダンプ・ファイルの形式
XMLType列の記憶域モデル | XMLデータのダンプ・ファイル・フォーマット |
---|---|
非構造化記憶域 |
テキスト |
構造化記憶域、バイナリXML記憶域またはハイブリッド記憶域(非構造化記憶域および構造化記憶域の混合) |
自己記述的なバイナリXML |
XMLType
データはXMLデータとしてエクスポートおよびインポートされるため、ソース・データベースおよびターゲット・データベースはそのデータに対して異なるXMLType
記憶域モデルを使用できます。つまり、ある方式でXMLType
データが格納されたデータベースからデータをエクスポートし、それとは異なる方式でXMLType
データが格納されたデータベースへインポートできます。
XML Schemaに基づくかどうかにかかわらず、XMLType
表をエクスポートできます。表がXML Schemaに基づいている場合、表のデータを定義するために使用されたXML Schemaに依存します。構造化記憶域の場合、このXML Schemaに、データを格納するために使用されたSQLオブジェクト型への依存関係があることもあります。そのため、XML Schemaに基づくXMLType
表を持つユーザーをエクスポートすると、次もエクスポートされます。
SQLオブジェクト型(構造化記憶域が使用されている場合)
XML Schema
XML表
次のガイドラインは、階層対応表(Oracle XML DBリポジトリ・データの基礎となる表)のエクスポートに適用されます。
階層対応表の行レベルのセキュリティ(RLS)ポリシーおよびパス索引トリガーはエクスポートされません。これらの表のインポート時には階層対応していません。
階層対応表の非表示列ACLOID
およびOWNERID
はエクスポートされません。インポートされたデータベースではこれらの列の値が異なる場合があるため、それらの値を再初期化する必要があります。
トランスポータブル表領域機能を使用して、XML Schemaに基づくか基づかないかにかかわらず、Oracleデータベース間で表領域セットを移動できます。トランスポータブル表領域モードを使用してエクスポートをすると、指定された表領域セット内の表のメタデータ(および依存オブジェクト)のみがアンロードされます。その後、表領域のデータ・ファイルを他のOracleデータベースにコピーし、トランスポータブル表領域のインポートを実行できます。一般的に、ここでは、表領域の作成および表領域メタデータの再作成のみが行われるため、非常に高速に処理されます。
expdp
のTRANSPORT_TABLESPACES
パラメータを使用して、オブジェクトのメタデータがソース・データベースからターゲット・データベースへエクスポートされる対象となる表領域名のリストを指定します。
トランスポータブル表領域をエクスポートして、それをリリース・レベルの低いデータベースにインポートすることはできません。ターゲット・データベースのリリース・レベルは、ソース・データベースと同じかそれよりも高いレベルである必要があります。
エクスポート時には、Oracle XML DBリポジトリ階層情報が失われます(「階層対応(リポジトリ)表のエクスポート」を参照)。インポート時、インポートされるデータにより参照されているXML Schemaもすべてインポートされます。
Oracle XML DBでは、従来のリレーショナル・データベース構造ではなく、階層構造のデータベースにコンテンツを格納するフォルダリング・メカニズムがサポートされます。フォルダリングを使用すると、表名や列名などではなく、パス名およびURIを使用してデータ(リポジトリ・ソース)を参照できます。expdp
またはimpdp
を使用する場合、このフォルダリング・メカニズムは完全にはサポートされません。
ただし、登録されたXML Schemaに基づくリソースの場合、データを格納するXMLType
表はエクスポートおよびインポートできます。エクスポート中、XMLデータのみがエクスポートされ、Oracle XML DB Foldering階層内の関係は失われます。
Oracle Data Pumpを使用したエクスポートおよびインポートは『Oracle Databaseユーティリティ』で説明されています。この項では、XMLType
データにコマンドexpdp
およびimpdp
を使用する場合のその他のガイドラインおよび例を示します。Oracle Data Pumpは、CLOB
として格納されているXMLType
データを持つ表に関しては、他のすべての表と同じ方法で表のエクスポートおよびインポートを行います。
ここに示す例では、コマンドライン・コマンドexpdp
およびimpdp
を使用します。このようなコマンドをユーザー名およびコマンド・パラメータとともに発行すると、パスワードの入力を要求されます。この例では、この入力要求は示されていません。
XMLType
表は、それを定義するために使用されたXML Schemaに依存します。同様に、XML Schemaはそれ用に作成または指定されたSQLオブジェクト型に依存します。XMLType
表をインポートするには、そのXML SchemaおよびSQLオブジェクト型が必要です。表モード・エクスポートを使用すると、表関連のメタデータおよびデータのみがエクスポートされます。これらのデータを正常にインポートできるようにするには、XML Schemaとオブジェクト型の両方が作成済であることを確認する必要があります。
この項に示す例では、次のようなデータベースを使用していることを前提としています。
サンプル・スキーマを持つデータベース
非構造化記憶域形式(CLOB
)であるXMLType
列を持つ表foo
READ
およびWRITE
権限がサンプル・スキーマに対して与えられているディレクトリ・オブジェクトdpump_dir
例36-1は、TABLES
パラメータを使用して指定した表モード・エクスポートを示しています。これにより表foo
がfoo.dmp
ダンプ・ファイルにエクスポートされます。
注意: 表モードでは、expdp コマンドでスキーマ接頭辞を指定しないと、エクスポート側のスキーマがデフォルトで使用されます。 |
例36-2は表モード・インポートを示しています。これにより、表foo
がfoo.dmp
ダンプ・ファイルからインポートされます。
例36-2 表モードでのXMLTypeデータのインポート
impdp system tables=foo directory=dpump_dir dumpfile=foo.dmp table_exists_action=append
このインポートの際にfoo
という名前の表がすでに存在している場合は、既存の表の最後の行にtable_exists_action
パラメータが追加されます。APPEND
を使用すると、データは常に新しい領域にロードされ、たとえ利用可能でも既存の領域は再利用されません。このため、ロード後にはデータの圧縮が必要になることがあります。
注意: Oracle Data Pumpおよびそのコマンドライン・クライアントexpdp およびimpdp の詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
スキーマ
・モード・エクスポートを実行する際には、ロールEXP_FULL_DATABASE
が割り当てられている場合、データベース・スキーマ、データベース・スキーマ定義、およびそのデータベース・スキーマのシステム権限をエクスポートできます。
この項に示す例では、次のようなデータベースを使用していることを前提としています。
ユーザーx4a
が表po2
を作成済。
ユーザーx4a
が登録されたXML Schema、ipo
を持っており、そのXML SchemaがOrdered Collection Table(OCT)、item_oct2
およびsitem_nt2
を作成済。
ユーザーx4a
は、例36-3に示すようにして表po2
を作成します。
例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に示すように表po2
がデータが移入され、エクスポートされます。
例36-4 スキーマ・モードでのXMLTypeデータのエクスポート
expdp x4a directory=tkxm_xmldir dumpfile=x4a.dmp
例36-4では、次のものすべてがエクスポートされます。
XML Schema、ipo
の登録時に生成されたすべてのデータ型
XML Schema、ipo
XML Schema、ipo
の登録時に生成された表po2
およびOrdered Collection Table(OCT)、item_oct2
およびsitem_nt2
これらすべての表にあるすべてのデータ
例36-5 スキーマ・モードでのXMLTypeデータのインポート
impdp x4a directory=tkxm_xmldir dumpfile=x4a.dmp
例36-5は、x4a.dmp
内のすべてのデータをユーザーx4a
がすでに存在する他のデータベースにインポートします。
例36-6は例36-5と同じ動作をしますが、ユーザーx4a
からユーザーquine
へのデータベース・スキーマの再マップも行います。
例36-6 スキーマ・モードでのXMLTypeデータのインポート、スキーマの再マップ
impdp x4a directory=tkxm_xmldir dumpfile=x4a.dmp remap_schema=x4a:quine
例36-6は、x4a.dmp
内のすべてのデータ(ユーザーx4a
のデータベース・スキーマからエクスポートしたデータ)を、データベース・スキーマquine
にインポートします。スキーマを再マップするには、ユーザーx4a
がローカル・データベース上でIMP_FULL_DATABASE
ロールを、ソース・データベース上でEXP_FULL_DATABASE
ロールを付与されている必要があります。REMAP_SCHEMA
は、すべてのオブジェクトをソース・スキーマからターゲット・スキーマにロードします。