2 Oracle Database

Oracle Data IntegratorでのOracle Databaseの使用方法について理解することが重要です。

この章の内容は次のとおりです。

2.1 概要

Oracle Data Integrator (ODI)では、Oracle Databaseのデータがシームレスに統合されます。Oracle Data Integratorのすべての機能(リバース・エンジニアリング、チェンジ・データ・キャプチャ、データ品質およびマッピングなど)は、Oracle Databaseエンジンを使用した場合に最良の動作が得られるように設計されています。

2.1.1 概念

Oracle Databaseの概念は、Oracle Data Integratorの概念に次のようにマップされます。1つのOracleインスタンスはOracle Data Integratorの1つのデータ・サーバーに対応します。このインスタンス内で、1つのスキーマはOracle Data Integratorの1つの物理スキーマにマップされます。1つのスキーマ内の関連する一連のオブジェクトが1つのデータ・モデルに対応し、各表、ビューまたはシノニムが、その属性、列および制約とともにODIデータストアとして表示されます。

Oracle Data Integratorでは、Java Database Connectivity (JDBC)を使用してOracleデータベース・インスタンスに接続します。

2.1.2 ナレッジ・モジュール

Oracle Data Integratorには、Oracleデータを処理するためのナレッジ・モジュール(KM)が用意されています。これらのリストを次の表に示します。KMでは、Oracle固有の機能が使用されます。Oracle Databaseでは、汎用SQL KMを使用することもできます。詳細は、汎用SQLを参照してください。

表2-1 Oracle KM

ナレッジ・モジュール 説明

RKM Oracle

表、ビュー、列、主キー、一意でない索引および外部キーをリバース・エンジニアリングします。

JKM Oracle 11g Consistent (Streams)

Oracle Streamsを使用して、Oracle 11g表の一貫性セット・ジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

このKMは推奨されていません。

JKM Oracle Consistent

トリガーを使用してOracle表の一貫性セット・ジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM Oracle Consistent (Update Date)

ソース表の「最終更新日」列に基づくトリガーを使用してOracle表の一貫性セット・ジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM Oracle Simple

トリガーを使用してOracle表の単純なジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM Oracle to Oracle Consistent (OGG Online)

CDCにOracle GoldenGateを使用する場合に、ODI CDCフレームワーク・インフラストラクチャを作成および管理します。詳細は、「Oracle GoldenGate」を参照してください。

CKM Oracle

Oracle表で定義された制約と照合して、データの整合性をチェックします。

LKM File to Oracle (EXTERNAL TABLE)

EXTERNAL TABLE SQLコマンドを使用して、ファイルからOracleステージング領域へデータをロードします。

LKM File to Oracle (SQLLDR)

SQL*Loaderコマンド行ユーティリティを使用して、ファイルからOracleステージング領域へデータをロードします。

LKM MSSQL to Oracle (BCP SQLLDR)

BCPおよびSQL*Loaderユーティリティを使用して、Microsoft SQL ServerからOracleデータベース(ステージング領域)へデータをロードします。

LKM Oracle BI to Oracle (DBLINK)

データベース・リンクを使用して、任意のOracle BI物理レイヤーからOracleターゲット・データベースへデータをロードします。詳細は、「Oracle Business Intelligence Enterprise Edition」を参照してください。

LKM Oracle to Oracle (DBLINK)

データベース・リンクを使用して、Oracleソース・データベースからOracleステージング領域データベースへデータをロードします。

LKM Oracle to Oracle Pull (DB Link)

データベース・リンクを使用して、Oracleソース・データベースからOracleステージング領域データベースへデータをロードします。ソース・データベースにビューを作成しません。また、ステージング・データベースにシノニムも作成しません。組込みKMです。

LKM Oracle to Oracle Push (DB Link)

データベース・リンクを使用してOracleターゲット表にデータをロードして統合します。ステージング・データベースにシノニムを作成しません。IKMの設定は無視されます。組込みKMです。

LKM Oracle to Oracle (datapump)

データポンプ形式の外部表を使用して、Oracleソース・データベースからOracleステージング領域データベースへデータをロードします。

LKM SQL to Oracle

任意のANSI SQL-92ソース・データベースからOracleステージング領域へデータをロードします。

LKM SAP BW to Oracle (SQLLDR)

SQL*Loaderユーティリティを使用して、SAP BWシステムからOracleステージングへデータをロードします。詳細は、『Oracle Data Integratorアプリケーション・アダプタ・ガイド』を参照してください。

LKM SAP ERP to Oracle (SQLLDR)

SQL*Loaderユーティリティを使用して、SAP ERPシステムからOracleステージングへデータをロードします。詳細は、『Oracle Data Integratorアプリケーション・アダプタ・ガイド』を参照してください。

IKM Oracle Incremental Update

増分更新モードでOracleのターゲット表にデータを統合します。フロー制御をサポートします。

IKM Oracle Incremental Update (MERGE)

MERGE文を使用して、増分更新モードでOracleのターゲット表にデータを統合します。フロー制御をサポートします。

IKM Oracle Incremental Update (PL SQL)

PL/SQLを使用して、増分更新モードでOracleのターゲット表にデータを統合します。フロー制御をサポートします。

IKM Oracle Insert

追加モードでOracleターゲット表にデータを統合します。単一のINSERT SQL文で、ターゲット表にデータが直接ロードされます。組込みKMです。

IKM Oracle Update

増分更新モードでOracleのターゲット表にデータを統合します。単一のUPDATE SQL文で、ターゲット表にデータが直接ロードされます。組込みKMです。

IKM Oracle Merge

増分更新モードでOracleのターゲット表にデータを統合します。単一のMERGE SQL文で、ターゲット表にデータが直接ロードされます。組込みKMです。

IKM Oracle Multi-Insert

複数表挿入文(MTI)を使用して、1つのソースのデータを1つ以上のOracleターゲット表に追加モードで統合します。このIKMを単一のマッピングで利用して、複数のターゲットをロードできます。組込みKMです。

IKM Oracle Multi Table Insert

複数表挿入文(MTI)を使用して、1つのソースのデータを1つ以上のOracleターゲット表に追加モードで統合します。フロー制御をサポートします。

IKM Oracle Slowly Changing Dimension

タイプ2の緩やかに変化するディメンションとして使用されるOracleのターゲット表に、データを統合します。フロー制御をサポートします。

IKM Oracle Spatial Incremental Update

MERGE DML文を使用して、増分更新モードでOracle (9i以上)のターゲット表にデータを統合します。このモジュールではSDO_GEOMETRYデータ型がサポートされます。フロー制御をサポートします。

IKM Oracle to Oracle Control Append (DBLINK)

制御追加モードで、1つのOracleインスタンスから別のOracleインスタンスのOracleターゲット表にデータを統合します。フロー制御をサポートします。

通常、このIKMはETL構成に使用されます。この構成では、ソース表とターゲット表は異なるOracleインスタンスにあり、マッピングのステージング領域は、ソース表の論理スキーマまたは第3のスキーマに設定されます。

SKM Oracle

Oracleデータベースのデータ・アクセスWebサービスを生成します。このSKMの使用方法の詳細は、『Oracle Data Integratorの管理』データ・サービスの生成およびデプロイに関する項を参照してください。

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

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

2.2.1 システム要件および動作要件

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

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

http://www.oracle.com/technetwork/middleware/data-integrator/documentation/index.html

2.2.2 テクノロジ固有の要件

Oracle用の一部のナレッジ・モジュールでは、このデータベース固有の機能が使用されます。この項では、これらの機能に関連する要件をリストします。

2.2.2.1 SQL*Loaderユーティリティの使用

この項では、OracleデータベースでSQL*Loaderユーティリティを使用する前に満たしておく必要がある要件を説明します。

  • Oracle Data Integratorのエージェントを実行するマシンに、OracleクライアントおよびSQL*Loaderユーティリティがインストールされている必要があります。

  • トポロジで定義されるサーバー名は、Oracleインスタンスへのアクセスに使用されるOracle TNS名と一致する必要があります。

  • 特定のログ・ファイルがSQL*Loaderによって作成されます。エラーが発生した場合は、このファイルを参照することをお薦めします。制御ファイル(CTL)、ログ・ファイル(LOG)、廃棄ファイル(DSC)および不良ファイル(BAD)は、ソース・ファイルの物理スキーマで定義された作業ディレクトリにあります。

  • ダイレクト・モードを使用するには、Oracle Data integratorのエージェントをターゲットのOracleサーバー・マシン上で実行する必要があります。ソース・ファイルもそのマシン上にあることが必要です。

2.2.2.2 外部表の使用

この項では、Oracleデータベースで外部表を使用する前に満たしておく必要がある要件を説明します。

  • External Tableコマンドでロードするファイルは、Oracleインスタンスからアクセスできることが必要です。このファイルをサーバー・マシンのファイル・システム上に置くか、Unique Naming Conventionパス(UNCパス)からアクセス可能にするか、もしくはローカルで格納する必要があります。

  • パフォーマンスの点から、ターゲット・サーバー・マシン上にOracle Data Integratorエージェントをインストールすることをお薦めします。

2.2.2.3 Oracleウォレットの使用

Oracleウォレットにより、複数のドメインにわたりデータベース資格証明を管理する簡単な方法が提供されます。

注意:

このセクションは、Data Integration Platform Cloudにのみ適用されます。

この項では、Oracle Database環境でウォレットを作成および管理するために必要な要件について説明します。

ノート:

ウォレットの作成および管理の詳細は、『エンタープライズ・ユーザー・セキュリティ管理者ガイド』Oracleウォレットの管理に関する項を参照してください。

この環境で、$ORACLE_HOME/oracle_common/bin/mkstoreコマンドなど、必要なすべてのコマンドおよびライブラリを提供します。

  • データベース環境にウォレットを作成し、管理することをお薦めします。通常、このタスクはデータベース管理者が実行し、クライアントが使用するために用意します。Oracle Client Runtimeパッケージをインストールして、Oracleウォレットの作成および管理に必要なコマンドおよびライブラリを用意することもできます。

    mkstore –wrl <wallet_location> -createというコマンドを使用して、クライアントにウォレットを作成します(wallet_locationは、ウォレットを作成して格納するディレクトリへのパスです)。

    たとえば —mkstore -wrl /scratch/ewallet - createCredential jdbc:oracle;thin:@kkm00ebs.in.oracle.com:1523:oditest odiUser odi

    • kkm00ebs.in.oracle.comは、ホスト名です

    • 1523は、ポート番号です

    • oditestは、SIDです

    • odiUserは、ユーザー名を示します

    • odiは、ユーザーのパスワードを示します

    ノート:

    1つのクライアント・ウォレットに、複数のデータベースの複数の資格証明を格納できます。同じウォレットに、同じデータベースの(複数のスキーマにログインするための)複数の資格証明は格納できません。同じデータベースに対する複数のログイン資格証明がある場合、別のウォレットに格納する必要があります。
  • 既存のクライアント・ウォレットにデータベース・ログイン資格証明を追加するには、コマンドmkstore –wrl <wallet_location> -createCredential <db_connect_string> <username> <password>を使用します

    • wallet_locationは、ウォレットを作成したディレクトリのパスです

    • db_connect_stringは、データソース定義で使用されるURLで指定する接続文字列(@の後の文字列部分)と同一である必要があります。

      短い形式または長い形式のURLを使用できます。

      • たとえば — jdbc:oracle:thin:@kkm00ebs.in.oracle.com:1523/oditest

        または
      • (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost-scan)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=myservice)))

        たとえば —(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname or ipaddress>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<db service>)) (security=(ssl_server_cert_dn="<certificate_info>")) )

ノート:

Oracleでは、2つのタイプのウォレットがサポートされます: 1.パスワードで保護されたウォレット(ewallet.p12)、および2.自動ログイン・ウォレット(cwallet.sso)は、セキュアな接続のためにインスタンスに関連付けられた証明書の詳細を検証することで、インスタンスに対するセキュアな接続を確立するための接続の詳細を取得する目的で使用されます。

2.2.3 接続性要件

この項では、Oracle Databaseに接続するための要件をリストします。

JDBCドライバ

Oracle Data Integratorは、Oracle Type 4 JDBCドライバのデフォルト・バージョンとともにインストールされます。このドライバではTCP/IPネットワーク・レイヤーが直接使用され、他のコンポーネントのインストールや構成は不要です。

Oracle JDBC OCIドライバを介して、またはODBCでもOracle Serverに接続できます。パフォーマンスの点から、Type 4ドライバの使用をお薦めします。

接続情報

Oracle DBAから次の情報を入手する必要があります。

  • Oracle Databaseをホストするマシンのネットワーク名またはIPアドレス。

  • Oracleリスナーのリスニング・ポート。

  • Oracleインスタンス名(SID)またはサービス名

  • Oracleユーザーのログインおよびパスワード。

2.3 トポロジの設定

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

  1. Oracleデータ・サーバーの作成
  2. Oracle物理スキーマの作成

2.3.1 Oracleデータ・サーバーの作成

1つのOracleデータ・サーバーは、特定のOracleユーザー・アカウントに接続された1つのOracle Databaseインスタンスに対応します。このユーザーは、データ・サーバーの下に作成されたOracle Data Integratorの物理スキーマに対応する、このインスタンスの複数のスキーマにアクセスできます。

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

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

  1. 「定義」タブ:

    データ・サーバー

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

    • インスタンス/dblink (データ・サーバー): このOracleインスタンスに使用されるTNS別名。データベース・リンクおよびSQL*Loaderの使用時に、Oracleインスタンスを識別するために使用されます。

    接続

    • ユーザー/パスワード: ソース・スキーマでの選択権限、ターゲット・スキーマでの選択および挿入の権限、およびこのデータ・サーバーの下に作成されたOracle物理スキーマ内に示される作業スキーマでの選択、挿入およびオブジェクト作成の権限を持つOracleユーザー(およびユーザーのパスワード)。

    • JNDI接続: このチェック・ボックスを選択して、JNDI接続設定を構成します。「JNDI」タブに移動して、必要なフィールドに入力します。

    • 資格証明ファイルの使用: このチェック・ボックスを選択して、事前構成されたウォレット・ファイル脚注1または資格証明zipファイルから接続の詳細を直接アップロードします。

    資格証明詳細

    注意:

    このセクションは、Data Integration Platform Cloudにのみ適用されます。
    • 資格証明ファイル: 「資格証明ファイル」テキスト・ボックスの横にある「参照」アイコンをクリックして、接続の詳細を含む必要なウォレット・ファイルの場所を参照します。

      デフォルトでは、資格証明の場所は、<homedir>/.odi/oracledi/ewallet. に存在するログインに使用されているものと同じウォレット・ファイル(ewallet.p12)または資格証明zipファイル(自動ログイン・ウォレット)を指すように移入されます必要なデータベース接続の詳細でこの資格証明ファイルが格納されている他の場所を参照することもできます。

      選択した内容に基づいて、次のオプションが表示されます。

      1. パスワードで保護されたウォレット・ファイル(ewallet.p12)を選択した場合

        • 「資格証明ファイルのパスワード」テキスト・ボックスが表示されます。これは、ウォレット作成時に構成したパスワードを示し、ウォレット・ファイルを開くために必要です。このテキスト・ボックスにウォレット・ファイルの適切なパスワードを入力します。

          ノート:

          ODIスーパーバイザは、ewallet.p12およびウォレット・パスワードを他のODIユーザーに配布できます。
        • 接続の詳細 - 入力したパスワードが有効な場合、ODIにより、ウォレットに存在する使用可能なすべてのデータベース接続の詳細が取得されて一覧表示されます。「接続の詳細」ドロップダウン矢印をクリックして、リストから必要なデータベース接続を選択します。

      2. 資格証明zipファイル(自動ログイン・ウォレット)を選択した場合

        • 「接続の詳細」テキスト・ボックスが表示されます。「接続の詳細」ドロップダウン矢印をクリックして、tnsnames.oraから取得された使用可能な接続URLのリストから必要な接続URLを選択します。

    • 必要な接続URLを選択すると、「JDBCドライバ」、「JDBC URL」、「ユーザー名」および「パスワード」フィールドは無効になり、関連するユーザー名、パスワード、JDBC URLおよびJDBCドライバの詳細は、事前構成されたウォレット・ファイルまたは資格証明zipファイルから取得された資格証明を使用して自動移入されます。これらは、ウォレット・ファイル(ewallet.p12)または資格証明zip (tnsnames.ora)に含まれる接続のリストを介してのみ変更できます。

    • 「保存」をクリックして、データ・サーバーの詳細を保存します

    • 「テスト接続」をクリックして、確立された接続をテストします

  2. データ・サーバーでJNDIアクセスがサポートされる場合、「JNDI」タブの詳細を入力します。
    • JNDI認証: 次から必要なオプションを選択します

      • なし- ネーミング・サービスまたはディレクトリ・サービスへの匿名アクセス

      • 簡易: 認証済アクセス(非暗号化)

      • CRAM-MD5: 認証済アクセス(暗号化されたMD5)

      • <other value>: 認証済アクセス(<other value>に従って暗号化)

    • JNDIユーザー/パスワード: JNDIディレクトリに接続するユーザー/パスワード

    • JNDIプロトコル: 接続に使用されるプロトコル

      ノート:

      最も一般的なプロトコルのみをここにリストしています。これは完全なリストではありません。
      • LDAP: LDAPディレクトリへのアクセス

      • SMQP: SwiftMQ MOMディレクトリへのアクセス

      • <other value>: サブプロトコル<other value>に従ったアクセス

    • JNDIドライバ: JNDI接続を可能にするドライバ

      たとえば — Sun LDAPディレクトリ: com.sun.jndi.ldap.LdapCtxFactory

    • JNDI URL: JNDI接続を可能にするURL

      たとえば: ldap://suse70:389/o=linuxfocus.org

    • JNDIリソース: 接続パラメータを含むディレクトリ要素

      たとえば: cn=sampledb

  3. データ・サーバーでJDBCアクセスがサポートされる場合、「JDBC」タブの詳細を入力します。
    • JDBCドライバ: データ・サーバーへの接続に使用するJDBCドライバの名前

      oracle.jdbc.OracleDriver

    • JDBC URL: データ・サーバーに接続できるURL。

      jdbc:oracle:thin:@<network name or ip address of the Oracle machine>:<port of the Oracle listener>:<name of the Oracle instance>

      Oracle JDBC Thinドライバを使用してOracle RACインスタンスに接続するには、次の例のようにOracle RACデータベースのURLを使用します。

      jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)
      (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521))
      (ADDRESS=(PROTOCOL=TCP)(HOST=host2) (PORT=1521))
      (CONNECT_DATA=(SERVICE_NAME=service)))

2.3.2 Oracle物理スキーマの作成

『Oracle Data Integratorの管理』物理スキーマの作成に関する項の説明に従って、標準の手順を使用してOracle物理スキーマを作成します。

『Oracle Data Integratorの管理』論理スキーマの作成に関する項の説明に従って、標準の手順を使用してこの物理スキーマ用の論理スキーマを作成し、特定のコンテキストで関連付けます。

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

Oracle Databaseを使用してプロジェクトを設定するには、標準の手順に従います。『Oracle Data Integratorでの統合プロジェクトの開発』統合プロジェクトの作成に関する項を参照してください。

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

  • RKM Oracle

  • CKM Oracle

  • LKM SQL to Oracle

  • LKM File to Oracle (SQLLDR)

  • LKM File to Oracle (EXTERNAL TABLE)

  • IKM Oracle Incremental Update

2.5 Oracleモデルの作成およびリバース・エンジニアリング

この項では、次の項目について説明します。

2.5.1 Oracleモデルの作成

『Oracle Data Integratorでの統合プロジェクトの開発』モデルの作成に関する項の説明に従って、標準の手順を使用してOracleモデルを作成します。

2.5.2 Oracleモデルのリバース・エンジニアリング

Oracleでは、JDBCドライバの機能のみを使用する標準のリバース・エンジニアリング、およびRKMを使用してOracleディクショナリからオブジェクトの構造を直接取得する、カスタマイズされたリバース・エンジニアリングの両方がサポートされています。

通常は、標準のJDBCリバース・エンジニアリングを使用して作業を開始することを検討してください。Oracleで標準のリバース・エンジニアリングを使用すると、表、ビュー、列、主キーおよび参照が取得されます。

それ以外のメタデータを取得する場合に、カスタマイズされたリバース・エンジニアリングに切り替えることを検討してください。Oracleのカスタマイズされたリバース・エンジニアリングでは、表およびビューの構造(列、主キー、代替キー、索引、チェック制約、シノニムおよび参照)が取得されます。

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

Oracleで標準のリバース・エンジニアリングを実行するには、『Oracle Data Integratorでの統合プロジェクトの開発』モデルのリバース・エンジニアリングに関する項の説明に従って、通常の手順を使用します。

カスタマイズされたリバース・エンジニアリング

RKMを使用してOracleでカスタマイズされたリバース・エンジニアリングを実行するには、『Oracle Data Integratorでの統合プロジェクトの開発』モデルのリバース・エンジニアリングに関する項の説明に従って、通常の手順を使用します。この項では、Oracleテクノロジ固有のフィールドのみについて説明します。

Oracleモデルの「リバース・エンジニアリング」タブでKM: RKM Oracle.<project name>を選択します。

2.6 チェンジ・データ・キャプチャの設定

ODI Oracleナレッジ・モジュールでは、チェンジ・データ・キャプチャ機能がサポートされています。ジャーナル化の設定方法およびキャプチャされた変更の使用方法の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』チェンジ・データの使用に関する項を参照してください。

Oracleジャーナル化ナレッジ・モジュールでは、単純ジャーナル化および一貫性セット・ジャーナル化がサポートされています。Oracle JKMでは、トリガーまたはOracle Streamsを使用して、ソース表でのデータ変更をキャプチャします。

Oracle Data Integratorには、Oracle表をジャーナル化するためのナレッジ・モジュールが用意されています。これらのリストを表2-2に示します。

表2-2 Oracleジャーナル化ナレッジ・モジュール

KM ノート

JKM Oracle 11g Consistent (Streams)

Oracle Streamsを使用して、Oracle 11g表の一貫性セット・ジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM Oracle Consistent

トリガーを使用してOracle表の一貫性セット・ジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM Oracle Consistent (Update Date)

ソース表の「最終更新日」列に基づくトリガーを使用してOracle表の一貫性セット・ジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM Oracle Simple

トリガーを使用してOracle表の単純なジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

Oracle GoldenGateを使用して、Oracleデータベースの変更されたレコードを使用することもできます。詳細は、「Oracle GoldenGate」を参照してください。

Streams JKMの使用

Streams KMはデフォルト値で機能します。推奨設定は次のとおりです。

  • デフォルトでは、AUTO_CONFIGURATION KMオプションはYesに設定されています。Yesに設定されている場合、Oracleデータベースを自動で構成し、すべての前提条件を確実に満たすことができます。このオプションでは、データベースの初期化パラメータが自動的に変更されるため、本番環境での使用はお薦めしません。Oracle Data Integrator実行ログの「ジャーナルの作成」ステップをチェックして、正しく実行されなかった構成タスク(警告ステータス)を検出する必要があります。

  • デフォルトでは、CONFIGURATION_TYPEオプションはLow Activityに設定されています。使用するデータベースのトランザクション・アクティビティが低レベルの場合は、このオプションをそのままにしておきます。

    開発データベースなどのスタンドアロン・データベース、またはラップトップにインストールする場合は、このオプションをStandaloneに設定します。

    データベースがトランザクション処理に集中的に使用される場合は、このオプションをHigh Activityに設定します。

  • デフォルトでは、STREAMS_OBJECT_GROUPオプションはCDCに設定されています。入力した値は、このJKMを使用してジャーナル化された複数のCDCセットにまたがって共有できる、オブジェクト名の生成に使用されます。このオプションの値がCDCの場合は、表2-3にリストされている命名規則が適用されます。

    このオプションに使用できるのは大文字のASCII文字のみで、15文字を超えることはできません。

    表2-3 CDCグループ名の命名規則の例

    CDCグループ ネーミング規則

    取得プロセス

    ODI_CDC_C

    Queue

    ODI_CDC_Q

    キュー表

    ODI_CDC_QT

    適用プロセス

    ODI_CDC_A

  • VALIDATEを使用すると、KMが正しく使用されていることを検証する追加のステップが有効になります。このオプションでは、一切の構成作業を伴わずに様々な要件がチェックされます(構成ステップの詳細は、AUTO_CONFIGURATIONオプションを参照)。要件が満たされていない場合は、エラー・メッセージがログに書き込まれ、JKMの実行はエラーのため停止します。

    複雑なKMを最初からより簡単に使用できるように、このオプションはデフォルトでYesに設定されています。

更新日JKMの使用

このJKMでは、ジャーナル化されたすべての表に、最終更新日を含む列が存在することが前提になります。この列の名前は、UPDATE_DATE_COL_NAMEナレッジ・モジュール・オプションで指定されます。

2.7 データ品質の設定

Oracle Data Integratorには、Oracle表で定義された制約と照合してデータの整合性をチェックするためのOracle CKMが用意されています。『Oracle Data Integratorでの統合プロジェクトの開発』フロー制御および静的制御に関する項を参照してください。

Oracle Data Integratorには、Oracleのチェックを実行するためのナレッジ・モジュールが用意されています。これらのリストを表2-4に示します。汎用SQL KMを使用することもできます。詳細は、汎用SQLを参照してください。

表2-4 Oracle Database用チェック・ナレッジ・モジュール

推奨KM ノート

CKM Oracle

OracleのRowidを使用してレコードを識別します。

2.8 マッピングの設計

マッピングのソース、ステージング領域またはターゲットとしてOracleを使用できます。Oracleテクノロジに基づくETL形式のマッピングを作成することもできます。

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

2.8.1 Oracleとの間でのデータのロード

マッピングのソース、ターゲットまたはステージング領域としてOracleを使用できます。マッピングの「ロード・ナレッジ・モジュール」タブでの、Oracleと別のタイプのデータ・サーバー間でデータをロードするためのLKMの選択は、マッピングのパフォーマンスに関してきわめて重要です。

2.8.1.1 Oracleからのデータのロード

次のKMには、Oracleデータベースからターゲットまたはステージング領域のデータベースへデータをロードするための、最適化されたメソッドが実装されています。これらのKM以外に、汎用SQL KMまたは関係するもう一方のテクノロジ固有のKMも使用できます。

ターゲットまたはステージング領域のテクノロジ KM ノート

Oracle

LKM Oracle to Oracle (dblink)

ソース・サーバー上にビューを作成し、ターゲット・サーバー上のこのビューにシノニムを作成します。

Oracle

LKM Oracle to Oracle Push (DB Link)

ソース・サーバー上にビューを作成しますが、ターゲット・サーバー上のこのビューにシノニムは作成しません。このKMでは、IKMの設定が無視されます。組込みKMです。

Oracle

LKM Oracle to Oracle Pull (DB Link)

ソース・サーバー上にビュー、またはターゲット・サーバー上のこのビューにシノニムを作成しません。組込みKMです。

Oracle

LKM Oracle to Oracle (datapump)

データポンプ形式の外部表を使用します。

2.8.1.2 Oracleへのデータのロード

次のKMには、ソースまたはステージング領域からOracleデータベースへデータをロードするための、最適化されたメソッドが実装されています。これらのKM以外に、汎用SQL KMまたは関係するもう一方のテクノロジ固有のKMも使用できます。

ソースまたはステージング領域のテクノロジ KM ノート

Oracle

LKM Oracle to Oracle (dblink)

ソース・サーバー上にビュー、ターゲット上にシノニムを作成します。

Oracle

LKM Oracle to Oracle Push (DB Link)

ソース・サーバー上にビューを作成せず、ターゲット上にシノニムを作成します。組込みKMです。

Oracle

LKM Oracle to Oracle Pull (DB Link)

ソース・サーバー上にビューを作成せず、ターゲット上にシノニムを作成しません。組込みKMです。

SAP BW

LKM SAP BW to Oracle (SQLLDR)

Oracleのバルク・ローダーを使用します。ファイルをステージング領域にすることはできません。

SAP ERP

LKM SAP ERP to Oracle (SQLLDR)

Oracleのバルク・ローダーを使用します。ファイルをステージング領域にすることはできません。

ファイル

LKM File to Oracle (EXTERNAL TABLE)

外部表を使用してファイルのデータをロードします。

ファイル

LKM File to Oracle (SQLLDR)

Oracleのバルク・ローダーを使用します。ファイルをステージング領域にすることはできません。

Oracle

LKM Oracle to Oracle (datapump)

データポンプ形式の外部表を使用します。

Oracle BI

LKM Oracle BI to Oracle (DBLINK)

ターゲットのステージング表のシノニムを作成し、OBIEE移入コマンドを使用します。

MSSQL

LKM MSSQL to Oracle (BCP-SQLLDR)

BCPを使用してSQL Serverからデータをアンロードし、SQL*Loaderを使用してOracleへデータをロードします。

All

LKM SQL to Oracle

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

2.8.2 Oracleへのデータの統合

Oracleには様々なデータ統合戦略があり、複数のモードを使用できます。マッピングの物理ダイアグラムのIKMの選択によって、統合のパフォーマンスおよび可能性が決まります。

次のKMには、Oracleターゲットにデータを統合するための、最適化されたメソッドが実装されています。これらのKM以外に、汎用SQL KMも使用できます。

モード KM ノート

更新

IKM Oracle Incremental Update

Oracle用に最適化されています。フロー制御をサポートします。

更新

IKM Oracle Update

Oracle用に最適化されています。Oracle UPDATE文のKMです。組込みKMです。

更新

IKM Oracle Merge

Oracle用に最適化されています。Oracle MERGE文のKMです。組込みKMです。

更新

IKM Oracle Spatial Incremental Update

SDO_GEOMETRYデータ型がサポートされます。フロー制御をサポートします。

更新

IKM Oracle Incremental Update (MERGE)

バルク・セットベースのMERGE機能のため、データが大量にある場合にお薦めします。フロー制御をサポートします。

更新

IKM Oracle Incremental Update (PL SQL)

PL/SQLを使用し、増分更新モードでLONGおよびBLOBをサポートします。フロー制御をサポートします。

特定

IKM Oracle Slowly Changing Dimension

タイプ2の緩やかに変化するディメンションをサポートします。フロー制御をサポートします。

特定

IKM Oracle Multi Table Insert

複数表挿入文をサポートします。フロー制御をサポートします。

追加

IKM Oracle to Oracle Control Append (DBLINK)

DB*Linksを使用してOracle用に最適化されています。フロー制御をサポートします。

追加

IKM Oracle Insert

Oracle用に最適化されています。Oracle INSERT文のKMです。組込みKMです。フロー制御をサポートします。

追加

IKM Oracle Multi-Insert

Oracle用に最適化されています。各ターゲットに適用されるOracle複数ターゲットINSERT文のKMです。組込みKMです。

緩やかに変化するディメンションの使用

緩やかに変化するディメンションを使用する場合は、ターゲット・データベースの各列に対して「緩やかに変化するディメンション」の値を必ず設定してください。この値は、「サロゲート・キー」、「自然キー」、列の上書きまたは挿入、「現在のレコード・フラグ」、「開始タイムスタンプ」および「終了タイムスタンプ」列を識別するために、IKM Oracle Slowly Changing Dimensionで使用されます。

複数表挿入の使用

IKM Oracle Multi Table Insertは、複数表挿入文を使用して、1つのソースのデータを1対多のOracleターゲット表に統合するために使用します。このIKMは、パッケージ内で順序付けされているマッピングで使用する必要があります。このパッケージは、次の条件を満たす必要があります。

  • パッケージの最初のマッピングには一時ターゲットがあり、KMオプションDEFINE_QUERYYESに設定されている必要があります。

    この最初のマッピングによって、複数表挿入文のSELECT句の構造(つまりソース・フロー)が定義されます。

  • 後続のマッピングは、この一時データストアをソースとし、KMオプションIS_TARGET_TABLEYESに設定されている必要があります。

  • パッケージの最後のマッピングでは、複数表挿入文を実行するために、KMオプションEXECUTEYESに設定されている必要があります。

  • マッピングの一時マッピングを導出表として使用(下位選択)trueに設定しないでください。

大量のデータが追加される場合は、KMオプションOPTIMIZER_HINT/*+ APPEND */に設定することを検討してください。

Spatialデータ型の使用

Oracle Spatialデータ型で増分更新操作を実行するには、トポロジでSDO_GEOMETRYデータ型を宣言し、IKM Oracle Spatial Incremental Updateを使用する必要があります。SDO_GEOMETREYデータ型の2つの列を比較するときには、GEOMETRY_TOLERANCEオプションを使用して、ジオメトリを同一と見なすエラー誤差を定義します。詳細は、Oracle Spatialユーザーズ・ガイドおよびリファレンスを参照してください。

2.8.3 ETL形式マッピングの設計

マッピングの設計方法に関する一般的な情報は、『Oracle Data Integratorでの統合プロジェクトの開発』マッピングの作成に関する項を参照してください。この項では、ステージング領域がOracleデータベースまたは任意のANSI-92準拠データベースで、ターゲットがOracleデータベース上にあるETL形式マッピングの設計方法について説明します。

ETLスタイル・マッピングでは、ターゲットと異なるステージング領域内のデータが、ODIで処理されます。Oracle Data Integratorでは、Oracleステージング領域からOracleターゲットへデータをロードするための2つの方法が提供されます。

使用するKM戦略に応じて フローおよび静的制御がサポートされます。

複数接続IKMの使用

複数接続IKMを使用すると、ステージング領域とソースが異なるデータ・サーバーにある場合にターゲットを更新できます。

Oracle Data Integratorには、Oracleデータを処理するための複数接続IKMであるIKM Oracle to Oracle Control Append (DBLINK)が用意されています。また、汎用SQL複数接続IKMも使用できます。詳細は、汎用SQLを参照してください。

複数接続IKMを使用する状況の詳細は、表2-5を参照してください。

ETL形式マッピングで複数接続IKMを使用するには:

  1. 『Oracle Data Integratorでの統合プロジェクトの開発』マッピングの作成に関する項の説明に従って、標準の手順を使用して、ステージング領域がOracle上またはANSI-92準拠テクノロジ、ターゲットがOracle上にあるマッピングを作成します。この項では、ETL形式固有のステップのみを説明します。

  2. ソース表の論理スキーマまたは第3のスキーマに対するマッピングのステージング領域を変更します。ステージング領域の変更方法の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』実行場所の構成に関する項を参照してください。

  3. 物理ダイアグラムでアクセス・ポイントを選択します。このオブジェクトのプロパティ・インスペクタが開きます。

  4. 「ロード・ナレッジ・モジュール」タブで、ソースからステージング領域にロードするLKMを選択します。使用できるLKMは表2-5を参照してください。

  5. 必要な場合は、KMオプションを変更します。

  6. 物理ダイアグラムでターゲットのタイトルをクリックしてターゲットを選択します。このオブジェクトのプロパティ・インスペクタが開きます。

    「統合ナレッジ・モジュール」タブで、ステージング領域からターゲットにデータをロードするETL複数接続IKMを選択します。使用できるIKMは表2-5を参照してください。

KMオプションを設定する際には、次の点に注意してください。

  • IKM Oracle to Oracle Control Append (DBLINK)に関する注意事項

    • 大量のデータが追加される場合は、KMオプションOPTIMIZER_HINTを/*+ APPEND */に設定してください。

    • ターゲット・スキーマ上に自動でdbリンクを作成するには、AUTO_CREATE_DB_LINKをtrueに設定してください。AUTO_CREATE_DB_LINKをfalse(デフォルト)に設定した場合は、この名前のリンクがターゲット・スキーマに存在する必要があります。

    • FLOW_CONTROLおよびSTATIC_CONTROLオプションを「はい」に設定した場合は、「チェック・ナレッジ・モジュール」タブでCKMを選択します。FLOW_CONTROLをYesに設定した場合は、フロー表がターゲット上に作成されます。

LKMと単一接続IKMの使用

専用の複数接続IKMがない場合は、標準のエクスポートLKMを標準の単一接続IKMと組み合せて使用します。エクスポートLKMは、フロー表をステージング領域からターゲットにロードするために使用します。単一接続IKMは、データ・フローをターゲット表に統合するために使用します。

Oracle Data Integratorでは、ETL形式マッピングのソースとして、任意のANSI SQL-92標準準拠テクノロジがサポートされます。ステージング領域およびターゲットはOracleです。

標準のエクスポートLKMおよび単一接続IKMを組み合せて使用する状況の詳細は、表2-5を参照してください。

ETL形式マッピングでLKMおよび単一接続IKMを使用するには:

  1. 『Oracle Data Integratorでの統合プロジェクトの開発』マッピングの作成に関する項の説明に従って、標準の手順を使用して、ステージング領域およびターゲットがOracle上にあるマッピングを作成します。この項では、ETL形式固有のステップのみを説明します。
  2. ソース表の論理スキーマまたは第3のスキーマに対するマッピングのステージング領域を変更します。ステージング領域の変更方法の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』実行場所の構成に関する項を参照してください。
  3. 物理ダイアグラムでアクセス・ポイントを選択します。このオブジェクトのプロパティ・インスペクタが開きます。
  4. 「ロード・ナレッジ・モジュール」タブで、ソースからステージング領域にロードするLKMを選択します。使用できるLKMは表2-5を参照してください。
  5. 必要な場合は、KMオプションを変更します。
  6. ステージング領域に対するアクセス・ポイントを選択します。このオブジェクトのプロパティ・インスペクタが表示されます。
  7. 「ロード・ナレッジ・モジュール」タブで、ステージング領域からターゲットにロードするLKMを選択します。使用できるLKMは表2-5を参照してください。
  8. 必要な場合は、KMオプションを変更します。
  9. 「ターゲット」のタイトルをクリックしてターゲットを選択します。このオブジェクトのプロパティ・インスペクタが開きます。

    「統合ナレッジ・モジュール」タブで、ターゲットを更新する標準単一接続IKMを選択します。使用できるIKMは表2-5を参照してください。

表2-5 Oracleデータを使用するETL形式マッピングのKMガイドライン

ソース ステージング領域 ターゲット エクスポートLKM IKM KM戦略 コメント

ANSI SQL-92標準準拠

Oracle

Oracle

該当なし

IKM Oracle to Oracle Control Append (DBLINK)

複数接続IKM

このKMは次の目的に使用します。

  • 制御追加の実行

  • パフォーマンス上の理由でのDB*Linksの使用

フロー制御および静的制御をサポートします。

ANSI SQL-92標準準拠

Oracleまたは任意のANSI SQL-92標準準拠データベース

Oracleまたは任意のANSI SQL-92標準準拠データベース

該当なし

IKM SQL to SQL Incremental Update

複数接続IKM

ターゲット側一時オブジェクトでの増分更新戦略が可能です。ターゲット・サーバーで一時オブジェクトを作成できない場合に、このKMを使用します。

アプリケーションの更新は、ソースからターゲットへ直接行われ、ターゲット上に一時オブジェクトは作成されません。フロー表がターゲットではなくステージング領域に作成される構成は、データ量が少ない場合のみ使用してください。

フロー制御および静的制御をサポートします。

Oracle

Oracle

Oracle

LKM to Oracle to Oracle (DBLINK)

IKM Oracle Slowly Changing Dimension

LKM + 標準IKM

該当なし

Oracle

Oracle

Oracle

LKM to Oracle to Oracle (DBLINK)

IKM Oracle Incremental Update

LKM + 標準IKM

該当なし

Oracle

Oracle

Oracle

LKM to Oracle to Oracle (DBLINK)

IKM Oracle Incremental Update (MERGE)

LKM + 標準IKM

該当なし

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

この項では、Oracleナレッジ・モジュールの使用時に発生する可能性がある問題のトラブルシューティングに関する情報を提供します。次の項目が含まれます。

2.9.1 Oracle Databaseのエラーのトラブルシューティング

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

java.sql.SQLException: ORA-01017: invalid username/password; logon denied
at ...
at ...
...

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

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

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

2.9.2 一般的な問題および解決策

この項では、一般的な障害と解決策について説明します。

  • ORA-12154 TNS: サービス名を解決できませんでした。

    TNS別名の解決。この問題は、OCIドライバの使用時、またはデータベース・リンクを使用したKMの使用時に発生する可能性があります。マシンのTNS別名の構成を確認してください。

  • ORA-02019 リモート・データベースの接続の説明が見つかりません

    存在しないデータベース・リンクを使用してKMが使用されています。データベース・リンク作成用のKMオプションを確認してください。

  • ORA-00900 SQL文が無効です

    ORA-00923 FROMキーワードが指定の位置にありません

    マッピングで生成されたコードまたはプロシージャに入力したコードがOracleで無効です。通常、このエラーは、マッピング、フィルタまたは結合での入力エラーに関連します。典型的な例は、引用符が欠落している、またはカッコが閉じられていないなどです。

    また、SQL以外の構文へのコールが原因の場合もよくあります。たとえば、次の構文を使用してOracleストアド・プロシージャをコールした場合です。

    EXECUTE SCHEMA.PACKAGE.PROC(PARAM1, PARAM2).
    

    ストアド・プロシージャの有効なSQLコールは次のとおりです。

    BEGIN
    SCHEMA.PACKAGE.PROC(PARAM1, PARAM2);
    END;
    

    EXECUTE SCHEMA.PACKAGE.PROC(PARAM1, PARAM2)はSQL*PLUS固有の構文であり、JDBCでは機能しません。

  • ORA-00904 列名が無効です

    マッピング、結合またはフィルタでの入力エラーです。列名でない文字列が列名として解釈されたか、列名にスペルミスがあります。

    このエラーは、最近構造が変更されたデータストアに関連付けられているエラー表にアクセスした場合にも表示されることがあります。エラー表に変更を反映するか、エラー表を削除して次回の実行時にOracle Data Integratorで再作成されるようにする必要があります。

  • ORA-00903 表名が無効です

    使用される表(ソースまたはターゲット)がOracleスキーマに存在しません。コンテキストのマッピング論理スキーマまたは物理スキーマをチェックし、このコンテキストに対してアクセスされるスキーマにその表が物理的に存在することを確認してください。

  • ORA-00972 識別子が長すぎます

    Oracleのオブジェクト識別子には制限があります(通常30文字)。この制限を超えるとこのエラーが表示されます。マッピングの実行中に作成された表がこの制限を超えると、このエラーが発生します(詳細は実行ログを参照してください)。

    Oracleテクノロジのトポロジをチェックし、オブジェクト名(表および列)の最大長がOracle構成に対応していることを確認してください。

  • ORA-01790 式には対応する式と同じデータ型を持つ必要があります

    (マッピングや結合において)暗黙的に変換できない2つの異なる値を結合しようとしています。これらの値に明示的な変換ファンクションを使用してください。



脚注の説明

脚注1: ODIでは、資格証明ファイル(自動ログイン・ウォレット)またはパスワードで保護されたウォレット・ファイル(ewallet.p12)から接続の詳細を直接アップロードできます