2 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_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 トポロジの設定
トポロジの設定には次が含まれます。
2.3.1 Oracleデータ・サーバーの作成
1つのOracleデータ・サーバーは、特定のOracleユーザー・アカウントに接続された1つのOracle Databaseインスタンスに対応します。このユーザーは、データ・サーバーの下に作成されたOracle Data Integratorの物理スキーマに対応する、このインスタンスの複数のスキーマにアクセスできます。
2.3.1.1 データ・サーバーの作成
『Oracle Data Integratorの管理』のデータ・サーバーの作成に関する項に記載されている標準の手順で、Oracleテクノロジ用データ・サーバーを作成します。この項では、Oracleデータ・サーバーの定義に関する必須または固有のフィールドのみについて説明します。
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_QUERYが
YES
に設定されている必要があります。この最初のマッピングによって、複数表挿入文のSELECT句の構造(つまりソース・フロー)が定義されます。
-
後続のマッピングは、この一時データストアをソースとし、KMオプションIS_TARGET_TABLEが
YES
に設定されている必要があります。 -
パッケージの最後のマッピングでは、複数表挿入文を実行するために、KMオプションEXECUTEが
YES
に設定されている必要があります。 -
マッピングの一時マッピングを導出表として使用(下位選択)を
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を使用するには:
-
『Oracle Data Integratorでの統合プロジェクトの開発』のマッピングの作成に関する項の説明に従って、標準の手順を使用して、ステージング領域がOracle上またはANSI-92準拠テクノロジ、ターゲットがOracle上にあるマッピングを作成します。この項では、ETL形式固有のステップのみを説明します。
-
ソース表の論理スキーマまたは第3のスキーマに対するマッピングのステージング領域を変更します。ステージング領域の変更方法の詳細は、『Oracle Data Integratorでの統合プロジェクトの開発』の実行場所の構成に関する項を参照してください。
-
物理ダイアグラムでアクセス・ポイントを選択します。このオブジェクトのプロパティ・インスペクタが開きます。
-
「ロード・ナレッジ・モジュール」タブで、ソースからステージング領域にロードするLKMを選択します。使用できるLKMは表2-5を参照してください。
-
必要な場合は、KMオプションを変更します。
-
物理ダイアグラムでターゲットのタイトルをクリックしてターゲットを選択します。このオブジェクトのプロパティ・インスペクタが開きます。
「統合ナレッジ・モジュール」タブで、ステージング領域からターゲットにデータをロードする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を使用するには:
表2-5 Oracleデータを使用するETL形式マッピングのKMガイドライン
ソース | ステージング領域 | ターゲット | エクスポートLKM | IKM | KM戦略 | コメント |
---|---|---|---|---|---|---|
ANSI SQL-92標準準拠 |
Oracle |
Oracle |
該当なし |
IKM Oracle to Oracle Control Append (DBLINK) |
複数接続IKM |
このKMは次の目的に使用します。
フロー制御および静的制御をサポートします。 |
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)から接続の詳細を直接アップロードできます