ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド
11g リリース1(11.1.1)
B62261-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

5 XMLファイル

この章では、Oracle Data IntegratorでのXMLファイルの使用方法について説明します。

この章には次の項が含まれます:

5.1 概要

Oracle Data Integratorでは、Oracle Data Integrator Driver for XMLを介したXMLファイル統合がサポートされます。

5.1.1 概念

XMLの概念は、次のようにOracle Data Integratorの概念にマップされます。1つのXMLファイルは、Oracle Data Integratorの1つのデータ・サーバーに対応します。このデータ・サーバー内で、単一のスキーマがXMLファイルの内容にマップされます。Oracle Data Integrator Driver for XML (XMLドライバ)により、XMLファイルの階層構造がリレーショナル・スキーマにロードされます。このリレーショナル・スキーマは、SQLを使用した問合せまたは変更が可能なスキーマ内にある一連の表です。XMLドライバでは、リレーショナル・スキーマをXMLファイルにアンロードして戻すこともできます。リレーショナル・スキーマは、表、列および制約とともに、ODIでデータ・モデルとしてリバース・エンジニアリングされます。このモデルは、ODI内で通常のリレーショナル・データ・モデルと同様に使用されます。リレーショナル・スキーマ内で変更されたデータをXMLファイルに書き込む必要がある場合は、XMLドライバによりリレーショナル・スキーマをファイルに同期化する機能が提供されています。

このドライバの詳細は、付録B「Oracle Data Integrator Driver for XMLの参照情報」を参照してください。

5.1.2 ナレッジ・モジュール

Oracle Data Integratorには、XMLデータを処理するためのIKM XML Control Appendが用意されています。このナレッジ・モジュールは、固有のXMLナレッジ・モジュールです。これには、リレーショナル・スキーマからファイルへデータを同期化するための固有のオプションが備えられています。

このKM以外に、XMLデータ・サーバーを任意のSQLデータ・サーバーとして使用することもできます。XMLデータ・サーバーでは、SQLデータ・サーバーをソース指定またはターゲット指定するテクノロジ固有のKMと汎用KMの両方がサポートされています。これらのKMの詳細は、第4章「汎用SQL」またはテクノロジの章を参照してください。

5.2 インストールおよび構成

XMLナレッジ・モジュールの使用を開始する前に、この項の情報を必ず読んでください。

5.2.1 システム要件

インストールを実行する前に、システム要件および動作要件のドキュメントを読んで、使用する環境がインストールする製品の最低インストール要件を満たすことを確認する必要があります。

サポートされているプラットフォームおよびバージョンのリストには、次のOracle Technical Network (OTN)からアクセスできます。

http://www.oracle.com/technology/products/oracle-data-integrator/index.html

5.2.2 テクノロジ固有の要件

Oracle Data IntegratorでXMLファイルを使用するためのテクノロジ固有の要件はありません。

5.2.3 接続性要件

この項では、XMLデータベースに接続するための要件をリストします。

Oracle Data Integrator Driver for XML

XMLファイルへのアクセスは、Oracle Data Integrator Driver for XMLを介して行われます。このJDBCドライバはOracle Data Integratorとともにインストールされるもので、その他のコンポーネントのインストールや構成は不要です。

システム管理者から次の接続情報を入手する必要があります。

  • 使用するXMLファイルに関連付けられているDTDまたはXSDファイルの場所

  • 使用するXMLファイルの場所

5.3 トポロジの設定

トポロジの設定には次が含まれます。

  1. XMLデータ・サーバーの作成

  2. XML用物理スキーマの作成

5.3.1 XMLデータ・サーバーの作成

各XMLデータ・サーバーは、Oracle Data Integratorにアクセス可能な1つのXMLファイルに対応します。

5.3.1.1 データ・サーバーの作成

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のデータ・サーバーの作成に関する項に記載されている標準の手順で、XMLテクノロジ用データ・サーバーを作成します。この項では、ファイル・データ・サーバーの定義に関する必須または固有のフィールドのみについて説明します。

  1. 「定義」タブ:

    • 名前: Oracle Data Integratorに表示されるデータ・サーバーの名前。

    • ユーザー/パスワード: これらのフィールドは、XMLデータ・サーバーでは使用しません。

  2. 使用するドライバに応じて、「JDBC」タブに次の値を入力します。

    • JDBCドライバ: com.sunopsis.jdbc.driver.xml.SnpsXmlDriver

    • JDBC URL: jdbc:snps:xml?[property=value&property=value...]

    表5-1に、Oracle Data Integrator Driver for XMLの主なプロパティをリストします。これらのプロパティは、JDBC URL内で指定できます。

    これらのプロパティの詳細、およびすべてのプロパティの包括的なリストは、付録B「Oracle Data Integrator Driver for XMLの参照情報」を参照してください。

    表5-1 JDBCドライバのプロパティ

    プロパティ 説明

    f

    <XMLファイルの場所>

    XMLファイル名。パス名には、バックスラッシュ"\"ではなくスラッシュ"/"を使用します。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。

    d

    <DTD/XSDファイルの場所>

    記述ファイル。このファイルはDTDまたはXSDファイルです。HTTP、FTPまたはファイルのURLを使用してファイルの場所を示すことができます。URLによって示されたファイルは読取り専用です。

    DTDまたはXSDファイルが存在しない場合、リレーショナル・スキーマはXMLファイルの内容のみを使用して作成されることに注意してください。DTDまたはXSDに記述されている使用可能な要素が1つのXMLファイル・インスタンスにすべて含まれていないことで、データ・モデルが不完全になる可能性があるため、このような構造からデータ・モデルをリバース・エンジニアリングすることはお薦めしません。

    re

    <ルート要素>

    スキーマのルート表として選択する要素の名前。この値では大/小文字が区別されます。このプロパティは、WSDLファイルから特定のメッセージ定義をリバース・エンジニアリングする場合や、使用可能なルート要素がXSDファイル内に複数存在する場合などに使用できます。

    ro

    true | false

    trueの場合は、XMLファイルが読取り専用モードで開きます。

    s

    <スキーマ名>

    XMLファイルのロード先となるリレーショナル・スキーマの名前。このプロパティが欠落している場合、XMLファイル名の最初の5文字を名前とするスキーマが自動的に作成されます。

    このスキーマは、XMLデータ・サーバーの下に物理スキーマを作成する際に選択されます。

    cs

    true | false

    大/小文字を区別するモードまたは区別しないモードで、XMLファイルがロードされます。区別しないモードの場合は、DTDファイル内のすべての要素名を区別できることが必要です(たとえば、同じファイル内にAbcとabcが存在する場合は、名前の競合が発生します)。


    これらのプロパティを次の例に示します。

    products.xsdによって説明される、PRODUCTSスキーマ内のPROD20100125_001.xmlに接続する場合の例は次のとおりです。

    jdbc:snps:xml?f=/xml/PROD20100125_001.xml&d=/xml/products.xsd&s=PRODUCTS

    staff_internal.dtdによって説明されるstaff_internal.xmlファイルに読取り専用モードで接続する場合の例は次のとおりです。スキーマ名はstaffになります。

    jdbc:snps:xml?f=/demo/xml/staff_internal.xml&d=/demo/xml/staff_internal.dtd&ro=true&s=staff
    

5.3.2 XML用物理スキーマの作成

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の物理スキーマの作成に関する項に記載されている標準の手順で、XML物理スキーマを作成します。

URLで設定したスキーマ名が表示されます。「データ・スキーマ」および「作業スキーマ」の両方について、このスキーマを選択します。

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の論理スキーマの作成に関する項に記載されている標準の手順で、この物理スキーマ用の論理スキーマを作成し、特定のコンテキストで関連付けます。

5.4 統合プロジェクトの設定

XMLデータベースを使用してプロジェクトを設定するには、標準の手順に従います。『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』の統合プロジェクトの作成に関する項を参照してください。

XMLでの作業を開始するにあたり、使用するプロジェクトに次のナレッジ・モジュールをインポートすることをお薦めします。

5.5 XMLファイルの作成およびリバース・エンジニアリング

この項には次のトピックが含まれます:

5.5.1 XMLモデルの作成

XMLファイル・モデルによって、一連のデータストアがグループ化されます。通常、各データストアはXMLファイル内の1つの要素を表します。

『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のモデルの作成に関する項に記載されている標準の手順で、XMLモデルを作成します。XMLテクノロジおよびトポロジの構成時に作成されたXML論理スキーマを選択します。

5.5.2 XMLモデルのリバース・エンジニアリング

XMLでは、XMLドライバの機能のみを使用する標準のリバース・エンジニアリングがサポートされています。

URLのdtdまたはdパラメータでDTDまたはXSDファイルを参照して、XMLファイル構造の包括的な説明から構造をリバース・エンジニアリングすることをお薦めします。XSDまたはDTDのいずれも使用できない場合は、XMLインスタンス・ファイルを使用してリバース・エンジニアリングできます。この場合、リレーショナル・スキーマの構造は、XMLファイルに含まれるデータから推測されます。

標準のリバース・エンジニアリング

XMLで標準のリバース・エンジニアリングを実行するには、『Oracle Fusion Middleware Oracle Data Integrator開発者ガイド』のモデルのリバース・エンジニアリングに関する項に記載されている通常の手順を行います。

標準のリバース・エンジニアリング・プロセスでは、XMLドライバによって生成されたリレーショナル・スキーマから表が自動的にリバース・エンジニアリングされます。これらの表には、自動的に次のものが含められます。

  • 主キー(PK列): 要素の親子関係を保持します。

  • 外部キー(FK列): 要素の親子関係を保持します。

  • 順序識別子(ORDER列): XMLファイル内の要素の順序を保持します。

これらの追加の列により、階層XML構造のリレーショナル・スキーマへのマッピングが可能になります。詳細は、付録B「Oracle Data Integrator Driver for XMLの参照情報」「XMLからSQLへのマッピング」を参照してください。

5.6 インタフェースの設計

XMLは、統合インタフェースのソースまたはターゲットとして使用できます。

インタフェースまたはチェック用に選択したKMによって、このインタフェースまたはチェックの機能およびパフォーマンスが決まります。この項に示す推奨事項は、XMLデータ・サーバーに関連する様々な状況でのKMの選択に役立ちます。

5.6.1 XMLインタフェースに関する注意事項

統合インタフェースでXMLを使用する前に、次の注意事項をよく読んでください。

5.6.1.1 XML構造のターゲット指定

XMLモデルのデータストアをインタフェースのターゲットとして使用する場合は、XML階層の親子関係および順序を保持するためにドライバで生成される列が確実にロードされるようにしてください。たとえば、リレーショナル・スキーマのREGION表に対応するregion要素のレコードを例5-1のようなXML構造に入力する場合は、REGION表の列REGION_IDおよびREGION_NAMEをロードする必要があります。これらの2つの列は、XML属性に対応します。

例5-1 XML構造

<country COUNTRY_ID="6" COUNTRY_NAME="Australia">
    <region REGION_ID="72" REGION_NAME="Queensland">
</country>

例5-1では、XMLドライバによってREGION表に自動的に作成された追加の列もロードする必要があります。それらの列は次のとおりです。

  • REGIONPK: この列により、各<region>要素を識別できます。

  • REGIONORDER: この列により、XMLファイル内で<region>要素を順序付けできます(レコードは、リレーショナル・スキーマでは順序付けされませんが、XML要素では順序付けされます)。

  • COUNTRYFK: この列により、<region>要素を<country>親要素との関係で配置できます。この値は、COUNTRY表のAustraliaレコードのCOUNTRY.COUNTRYPK値と同じです。

5.6.1.2 XMLファイルとスキーマの同期化

XMLファイルのデータとXMLスキーマのデータを完全に同期化するには、次のコマンドをコールする必要があります。

  • データの読取りまたは更新のためにXMLモデルの表を使用する前に、XML論理スキーマでSYNCHRONIZE FROM FILEコマンドを使用することをお薦めします。この操作によって、XML階層のデータがXMLリレーショナル・スキーマに再ロードされます。このスキーマは、最初のアクセス時に組込みまたは外部のデータベース記憶域にロードされます。その後に行ったファイルへの変更は、このコマンドを発行しないかぎり、自動的にはスキーマへ同期されません。

  • リレーショナル・スキーマへの変更を行った後、XML論理スキーマでSYNCHRONIZE ALLまたはSYNCHRONIZE FROM DATABASEコマンドをコールして、このスキーマをXML階層データにアンロードする必要があります。IKM XML Control Appendにはこの同期化コマンドが実装されています。

XMLスキーマを操作するインタフェースおよびプロシージャの前(および後)に、パッケージ内のプロシージャでこれらのコマンドを実行する必要があります。

これらのコマンドの詳細は、付録B「Oracle Data Integrator Driver for XMLの参照情報」を参照してください。

5.6.1.3 サイズが大きいXMLファイルの処理

Oracle Data Integratorでは、サイズが大きいXMLファイルを高いパフォーマンスで処理できます。

デフォルトのドライバ構成では、リレーショナル・スキーマがメモリーの組込みエンジンに格納されます。サイズの大きいXMLファイルを処理する場合は、外部データベース記憶域の使用を検討することをお薦めします。

これらのコマンドの詳細は、B.2.3.1項「スキーマの格納」を参照してください。

5.6.2 XMLとの間でのデータのロード

XMLファイルは、インタフェースのソースまたはターゲットとして使用できます。インタフェース・フロー・タブでの、XMLファイルと別のタイプのデータ・サーバー間でデータをロードするためのLKMの選択は、インタフェースのパフォーマンスに関してきわめて重要です。

5.6.2.1 XMLスキーマからのデータのロード

汎用SQL KMまたは関係するもう一方のテクノロジ固有のKMを使用して、XMLデータベースからターゲットまたはステージング領域のデータベースへデータをロードします。

XMLソースからステージング領域へのロードに使用できるKMの例を表5-2に示します。

表5-2 XMLからステージング領域へロードするためのKM

ステージング領域 KM 説明

Microsoft SQL Server

LKM SQL to MSSQL (BULK)

SQL Serverのバルク・ローダーを使用します。

Oracle

LKM SQL to Oracle

汎用LKMより高速です(統計を使用)。

Sybase

LKM SQL to Sybase ASE (BCP)

Sybaseのバルク・ローダーを使用します。

すべて

LKM SQL to SQL

ANSI SQL-92のソースとANSI SQL-92のステージング領域の間でデータをロードするための汎用KMです。


5.6.2.2 XMLスキーマへのデータのロード

XMLスキーマをステージング領域として使用することはお薦めしません。ただし、XMLがインタフェースのターゲットで、そのターゲットをステージング領域として使用する場合は例外です。この場合は、XMLスキーマにデータをロードする必要があることがあります。

汎用SQL KMまたは関係するもう一方のテクノロジ固有のKMを使用してソースまたはステージング領域からXMLスキーマへデータをロードします。

ソースからXMLステージング領域へのロードに使用できるKMの例を表5-3に示します。

表 5-3 XMLスキーマにロードするためのKM

ソース KM 説明

ファイル

LKM File to SQL

ANSI SQL-92のステージング領域にあるファイルにロードするための汎用KMです。

すべて

LKM SQL to SQL

ANSI SQL-92のソースとANSI SQL-92のステージング領域の間でデータをロードするための汎用KMです。


5.6.3 XMLへのデータの統合

XMLはインタフェースのターゲットとして使用できます。XMLでのデータ統合戦略は、ステージング領域からXMLへのロードに関係します。インタフェース・フロー・タブのIKMの選択によって、統合のパフォーマンスおよび可能性が決まります。

IKM XML Control Appendでは、データがXMLスキーマに統合されるほか、データをファイルに同期するオプションを使用できます。このKM以外に、汎用SQL KMまたは関係するもう一方のテクノロジ固有のKMも使用できます。汎用KMまたはテクノロジ固有のKMを使用する場合は、スキーマで行われた変更をXMLファイルに書き込むための同期化操作を手動で実行する必要があります。

次のデータ統合に使用できるKMの例を表5-4に示します。

  • ステージング領域からXMLターゲットへの統合

  • XMLステージング領域からXMLターゲットへの統合。この場合、ステージング領域はXMLターゲット上にあります。

表5-4 XMLファイルにデータを統合するためのKM

モード ステージング領域 KM 説明

更新

XML

IKM SQL Incremental Update

汎用KM

追加

XML

IKM SQL Control Append

汎用KM

追加

すべてのRDBMS

IKM SQL to SQL Append

汎用KM


5.7 トラブルシューティング

この項では、Oracle Data IntegratorでのXMLの使用時に発生する可能性がある問題のトラブルシューティングに関する情報を提供します。この章の内容は、次のとおりです。

5.7.1 XMLで発生したエラーの検出

通常、Oracle Data Integratorではエラーは次のように表示されます。

java.sql.SQLException: No suitable driver
at ... 
at ... 
...

このjava.sql.SQLExceptioncodeは、JDBCドライバを介して問合せが行われ、エラーが戻されたことを単純に示しています。このエラーはデータベースまたはドライバのエラーであることが多く、次のように解明する必要があります。

まず、太字のテキスト部分のみに注目してください。これは、XMLドライバのドキュメントで検索する必要があります。ここで示されているように、固有のエラー・コードが含まれている場合は、エラーをすばやく識別できます。

このようなエラーが実行ログで検出された場合は、データベースに送信されたSQLコードを分析して、エラーの原因を特定する必要があります。このコードは、エラーのあるタスクの「説明」タブに表示されます。

5.7.2 一般的なエラー

この項では、XMLの最も一般的なエラーおよび主な原因について説明します。この章の内容は、次のとおりです。

  • No suitable driver

    JDBC URLが不正です。URL構文が有効であることを確認してください。

  • File <XML file> is already locked by another instance of the XML driver.

    XMLファイルが別のユーザーまたはアプリケーションによってロックされています。XMLファイルを使用している可能性があるすべてのアプリケーションを閉じてください。該当するアプリケーションがクラッシュした場合は、XMLファイルのディレクトリに残っている.lckファイルを削除してください。

  • The DTD file "xxxxxxx.dtd" doesn't exist

    この例外は、コマンドLOAD FILEを使用してXMLファイルをロードしようとしたときに発生する可能性があります。このエラー・メッセージの原因として、次の2つが考えられます:

    • DTDファイルのパスが間違っています。

    • 対応するXMLファイルが(接続時などに)別のスキーマによってすでに開かれています。

  • Table not found: S0002 Table not found: <table name> in statement [<SQL statement>]

    アクセスしようとしている表がスキーマに存在しません。

  • Column not found: S0022 Column not found: <column name> in statement [<SQL statement>]

    アクセスしようとしている列が、文の中で指定された表に存在しません。