プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Data Integrator接続およびナレッジ・モジュール・ガイド
12c (12.2.1.1)
E77236-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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)が用意されています。これらのリストを表2-1に示します。KMでは、Oracle固有の機能が使用されます。Oracle Databaseでは、汎用SQL KMを使用することもできます。詳細は、第4章「汎用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フレームワーク・インフラストラクチャを作成および管理します。詳細は、第24章「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ターゲット・データベースへデータをロードします。詳細は、第16章「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/technology/products/oracle-data-integrator/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 Streamsの使用

この項では、Oracle Streamsのジャーナル化ナレッジ・モジュールを使用するための要件を説明します。


注意:

最初に、Oracle Streamsの要件の包括的なリストが含まれている、『Oracle Databaseデータ・ウェアハウス・ガイド』のチェンジ・データ・キャプチャに関する項を参照することをお薦めします。

Oracle Streamsを使用してチェンジ・データ・キャプチャを設定する前に、次の要件を満たしておく必要があります。

  • Oracle StreamsがOracle Databaseにインストールされている必要があります。

  • OracleデータベースがSPFILEを使用して稼働する必要があります(AUTO_CONFIGURATIONオプションのみで必須)。

  • AQ_TM_PROCESSESオプションをデフォルト値のままにしておくか、0および10以外の値に設定する必要があります。

  • COMPATIBLEオプションを10.1以上に設定する必要があります。

  • データベースがARCHIVELOGモードで稼働する必要があります。

  • 適用およびキャプチャのプロセス数を考慮するために、PARALLEL_MAX_SERVERSを増やす必要があります。少なくとも、スタンドアロン構成の場合は6、低アクティビティの場合は9、高アクティビティの場合は21増やす必要があります。

  • UNDO_RETENTIONを最低3600に設定する必要があります。

  • STREAMS_POOL_SIZEを増やす必要があります。スタンドアロン構成の場合は100MB、低アクティビティの場合は236MB、高アクティビティの場合は548MB増やしてください。

  • ODIモデルで定義された主キーのすべての列が、SUPPLEMENTAL LOG GROUPに含まれている必要があります。

  • AUTO_CONFIGURATIONナレッジ・モジュール・オプションを使用する際に、上のすべての要件が自動的にチェックおよび設定されますが、一部のアクションは手動で設定する必要があります。詳細は、「Streams JKMの使用」を参照してください。

    AUTO_CONFIGURATIONナレッジ・モジュール・オプションを使用せずにこのKMを実行するには、次のシステム権限が付与されている必要があります。

    • 接続ユーザーに対するDBAロール

    • 接続ユーザーに対するStreams管理者

    • 作業スキーマに対するRESOURCEロール

    • 作業スキーマに対するSELECT ANY TABLE

  • 非同期モードでは、ジャーナル化されたシステムで最高のパフォーマンスが得られますが、追加のOracle Database初期化構成および追加の構成用権限が必要です。

  • 非同期モードでは、ジャーナル化されたデータベースがARCHIVELOGに含まれている必要があります。このオプションをオンにする前に、まず、非同期AutoLog公開の概念を理解しておく必要があります。ARCHIVELOGモードでのデータベースの実行の詳細は、『Oracle Database管理者ガイド』を参照してください。サプリメンタル・ロギングの詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』の非同期チェンジ・データ・キャプチャに関する項を参照してください。これは、アーカイブを正しく管理し、アーカイブ・ファイルがアーカイブ・リポジトリから定期的に削除されていない場合にOracleインスタンスが停止するなどの一般的な問題を回避するのに役立ちます。

  • 非同期モードを使用する場合は、インスタンスに接続するユーザーに、Oracle Streamsの管理認可を付与する必要があります。これは、この権限をすでに持っているユーザー(SYSTEMユーザーなど)としてログインしているときに、DMBS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGEプロシージャを使用して実行できます。

  • 作業スキーマには、他のスキーマに格納されている表を参照するビューを作成できるように、SELECT ANY TABLE権限を付与する必要があります。

その他のすべての前提条件に関する詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』の「チェンジ・データ・キャプチャ」を参照してください。

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)の名前。

  • 接続先インスタンスのTNS別名。

  • 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に表示されるデータ・サーバーの名前。

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

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

  2. 「JDBC」タブ:

    • JDBCドライバ: oracle.jdbc.OracleDriver

    • JDBC URL: jdbc:oracle:thin:@<network name or ip address of the Oracle machine>:<port of the Oracle listener (1521)>:<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データベースの変更されたレコードを使用することもできます。詳細は、第24章「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グループ名の命名規則の例

    キャプチャ・プロセス

    ODI_CDC_C

    キュー

    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を使用することもできます。詳細は、第4章「汎用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へデータをロードします。
すべて 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も使用できます。詳細は、第4章「汎用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

na

Oracle

Oracle

Oracle

LKM to Oracle to Oracle (DBLINK)

IKM Oracle Incremental Update

LKM + 標準IKM

na

Oracle

Oracle

Oracle

LKM to Oracle to Oracle (DBLINK)

IKM Oracle Incremental Update (MERGE)

LKM + 標準IKM

na


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つの異なる値を結合しようとしています。これらの値に明示的な変換ファンクションを使用してください。