Remote Oracle Database としてXML データにアクセス

詳細情報をご希望ですか?

無償トライアル:

ダウンロードへ

製品の詳細情報へ:

XML ODBC Driver

XML ODBC Driver は、ODBC 接続をサポートする様々なアプリケーションからXML データストアへの接続を実現するパワフルなツールです.

標準データベースにアクセスするときと同感覚でXML データにアクセスし、標準ODBC Driver インターフェースを通じて読み出し、書き込み、更新が可能に。



Oracle Heterogenous Services を使ってOracle system からXML にアクセス。



CData ODBC Driver for XML を使って、 ODBC 標準をサポートするあらゆるアプリケーションからデータに連携できます。Oracle Database Gateway for ODBC は、ODBC データソースにリモートOracle データベースとして連携接続できるようにするHeterogeneous Services agent (異種サービスエージェント)です。この記事では、CData ODBC Driver for XML を使ってXML からOracle にデータベースリンクを作成する方法、およびSQL*Plus ツールを介してXML に連携してクエリする方法について説明します。SQL Developer からも、データベースリンクの作成およびクエリの実行ができます。

Oracle ODBC Gateway 互換性のための接続プロパティ

ドライバーには複数の接続プロパティがあり、Oracle データベースと同じようにXML にアクセスできます。SQL*Plus およびSQL Developer のXML を扱う場合は、以下のプロパティを設定します。Oracle ODBC Gateway との互換性のため、認証およびその他の必要な接続プロパティに加えて、以下の接続プロパティを設定する必要があります。

  • MapToWVarchar=False

    このプロパティをSQL_WVARCHAR の代わりにSQL_VARCHAR に設定して文字列データ型をマップします。さまざまなインターナショナルキャラクタセットに対応するため、ドライバーはデフォルトでSQL_WVARCHAR を使います。unicode タイプが返されたときに、このプロパティを使ってORA-28528 Heterogeneous Services データタイプ変換エラーを防ぐことができます。

  • MaximumColumnSize=4000

    このプロパティを設定して、カラムの最大サイズを4000文字に制限します。Oracle Database Gateway では、文字列型はカラムの最大サイズが4000である必要があります。

  • UpperCaseIdentifiers=True

    このプロパティで、識別子を引用しないようにし設定します。このプロパティを使って、大文字の識別子をOracle にレポートします。Oracle はデフォルトで識別子を大文字で格納するため、大文字の識別子を引用から避ける必要はありません。

  • IncludeDualTable=True

    このプロパティを設定して、Oracle DUAL 表をモックします。SQL Developer はこのテーブルを使って接続をテストします。

Heterogeneous Service Agent の初期化

下記の手順に従ってODBC Gateway をXML data に作成すると、リアルタイムXML にOracle データベースとしてクエリすることが可能になります。

  1. 接続プロパティの指定がまだの場合は、DSN (データソース名)で行います。Microsoft ODBC データソースアドミニストレーターを使ってODBC DSN を作成および設定できます。

    一般的な接続文字列は次のとおりです:

    • URI
    • DataModel

    See the Getting Started chapter in the data provider documentation to authenticate to your data source: The data provider models XML APIs as bidirectional database tables and XML files as read-only views (local files, files stored on popular cloud services, and FTP servers). The major authentication schemes are supported, including HTTP Basic, Digest, NTLM, OAuth, and FTP. See the Getting Started chapter in the data provider documentation for authentication guides.

    After setting the URI and providing any authentication values, set DataModel to more closely match the data representation to the structure of your data.

    The DataModel property is the controlling property over how your data is represented into tables and toggles the following basic configurations.

    • Document (default): Model a top-level, document view of your XML data. The data provider returns nested elements as aggregates of data.
    • FlattenedDocuments: Implicitly join nested documents and their parents into a single table.
    • Relational: Return individual, related tables from hierarchical data. The tables contain a primary key and a foreign key that links to the parent document.

    See the Modeling XML Data chapter for more information on configuring the relational representation. You will also find the sample data used in the following examples. The data includes entries for people, the cars they own, and various maintenance services performed on those cars.

    Microsoft ODBC データソースアドミニストレーターで必要なプロパティを設定する方法は、ヘルプドキュメントの「はじめに」をご参照ください。

  2. oracle-home-directory\hs\admin フォルダにinitmyxmldb.ora ファイルを作成し、以下の設定を追加します:

    HS_FDS_CONNECT_INFO = "Your-XML-DSN"
  3. oracle-home-directory\NETWORK\admin にあるlistener.ora ファイルに、次のアドレスを追加します:

    SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = myxmldb) (ORACLE_HOME = your-oracle-home) (PROGRAM = dg4odbc) ) )
  4. oracle-home-directory\NETWORK\admin にあるtnsnames.ora ファイルに、次の接続ディスクリプタを追加します:

    myxmldb = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) (CONNECT_DATA=(SID=myxmldb)) (HS=OK) )
  5. 次のコマンドを使って設定をテストします:

    tnsping myxmldb
  6. SQL*Plus を起動し、次のコマンドでデータベースリンクを作成します:

    CREATE DATABASE LINK MYXMLDB CONNECT TO "user" IDENTIFIED BY "password" USING 'myxmldb';

これで、SQL*Plus で次のようなクエリを実行できます:

SELECT * from people@myxmldb;