16 IBM DB2 for iSeries

Oracle Data IntegratorでのIBM DB2 for iSeriesの使用方法を理解することが重要です。

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

概要

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

概念

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

Oracle Data Integratorでは、Java Database Connectivity (JDBC)を使用してIBM DB2 for iSeriesに接続します。

ナレッジ・モジュール

Oracle Data Integratorには、IBM DB2 for iSeriesデータを処理するためのナレッジ・モジュール(KM)が用意されています。これらのリストを表16-1に示します。これらの特定のIBM DB2 for iSeriesナレッジ・モジュールに加えて、IBM DB2 for iSeriesで汎用SQL KMを使用することもできます。詳細は、汎用SQLを参照してください。

表16-1 DB2 for iSeries KM

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

IKM DB2 400 Incremental Update

増分更新モードでIBM DB2 for iSeriesのターゲット表にデータを統合します。

IKM DB2 400 Slowly Changing Dimension

データ・ウェアハウスでタイプ2の緩やかに変化するディメンションとして使用されるIBM DB2 for iSeriesのターゲット表に、データを統合します。

JKM DB2 400 Consistent

トリガーを使用してIBM DB2 for iSeries表の一貫したジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM DB2 400 Simple

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

RKM DB2 400

IBM DB2 for iSeriesのメタデータ(物理ファイル、表、ビュー、外部キー、一意キー)を取得します。

インストールおよび構成

IBM DB2 for iSeriesテクノロジでの作業を開始する前に、この項の情報を必ず読んでください。

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

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

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

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

テクノロジ固有の要件

IBM DB2 for iSeries用の一部のナレッジ・モジュールでは、このデータベース固有の機能が使用されます。これらのナレッジ・モジュールの使用時には、次の制限が適用されます。

これらのトピックの追加情報は、IBM DB2 for iSeriesのドキュメントを参照してください。

ジャーナルでのCDCの使用

この項では、IBM DB2 for iSeriesでジャーナル・ベースのチェンジ・データ・キャプチャを使用する前に満たしておく必要がある要件を説明します。

サポートされるデータ型の詳細は、IBM DB2 for iSeriesのドキュメントを参照してください。

トポロジの設定

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

  1. DB2/400データ・サーバーの作成

  2. DB2/400物理スキーマの作成

DB2/400データ・サーバーの作成

IBM DB2/400データ・サーバーは、特定のユーザー・アカウントに接続された1つのiSeriesサーバーに対応します。このユーザーには、データ・サーバーの下に作成されたOracle Data Integrator内の物理スキーマに対応する、このサーバー内の複数のデータベースへのアクセス権が付与されます。

データ・サーバーの作成

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

  1. 「定義」タブ:
    • 名前: Oracle Data Integratorに表示されるデータ・サーバーの名前

    • ホスト (データ・サーバー): ホストの名前またはIPアドレス

    • ユーザー/パスワード: DB2ユーザーおよびそのパスワード

  2. 「JDBC」タブ:
    • JDBCドライバ: weblogic.jdbc.db2.DB2Driver

    • JDBC URL: jdbc:as400://<host>[;libraries=<library>][;<property>=<value>...]

      URLのパラメータは次のとおりです。

      • <host>: サーバーのネットワーク名またはIPアドレス

      • <library>: アクセスするデフォルト・ライブラリまたはコレクション

      • <property>=<value>: 接続プロパティ。利用可能なプロパティのリストについては、ドライバのドキュメントを参照してください。

DB2/400物理スキーマの作成

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

この物理スキーマ内の作業スキーマおよびデータ・スキーマは、それぞれ1つのスキーマ(コレクションまたはライブラリ)に対応します。作業スキーマは一時スキーマを指す必要があり、データ・スキーマは統合するデータをホストするスキーマを指す必要があります。

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

統合プロジェクトの設定

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

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

  • IKM DB2 400 Slowly Changing Dimension

  • JKM DB2 400 Consistent

  • JKM DB2 400 Simple

  • RKM DB2 400

  • CKM SQL

IBM DB2/400モデルの作成およびリバース・エンジニアリング

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

IBM DB2/400モデルの作成

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

IBM DB2/400モデルのリバース・エンジニアリング

IBM DB2 for iSeriesでは、JDBCドライバの機能のみを使用する標準のリバース・エンジニアリング、およびRKMを使用してメタデータ取得する、カスタマイズされたリバース・エンジニアリングの両方がサポートされています。

通常は、標準のJDBCリバース・エンジニアリングを使用して作業を開始することを検討してください。

それ以外のメタデータを取得する場合に、カスタマイズされたリバース・エンジニアリングに切り替えることを検討してください。IBM DB2 for iSeriesのカスタマイズされたリバース・エンジニアリングでは、物理ファイル、データベース表、データベース・ビュー、列、外部キー、主キーおよび代替キーが取得されます。

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

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

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

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

IBM DB2/400モデルの「リバース」タブでKM: RKM DB2 400.<project name>を選択します。

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

Oracle Data Integratorでは、iSeriesでのチェンジ・データ・キャプチャを次の2つの方法で処理します。

  • ジャーナル化された表でのトリガー・ベースCDC。この方法は、JKM DB2/400 SimpleまたはJKM DB2/400 Consistentで設定されます。このCDCは、他のシステムのCDCと同じです。詳細は、「トリガー・ベースCDCの設定」を参照してください。

  • ネイティブiSeriesトランザクション・ジャーナルを読み取る方法による、ログ・ベースCDC。この方法では、整合セットCDCはサポートされず、プラットフォーム固有の構成が必要になります。詳細は、「トリガー・ベースCDCの設定」を参照してください。

トリガー・ベースCDCの設定

この方法では、単純ジャーナル化および一貫性セット・ジャーナル化がサポートされます。IBM DB2 for iSeries JKMでは、トリガーを使用してソース表でのデータ変更をキャプチャします。

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

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

表16-2 IBM DB2 for iSeriesジャーナル化ナレッジ・モジュール

KM 説明

JKM DB2 400 Consistent

トリガーを使用してIBM DB2 for iSeries表の一貫したジャーナル化を行うためのジャーナル化インフラストラクチャを作成します。

JKM DB2 400 Simple

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

データ品質の設定

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

詳細は、汎用SQLを参照してください。

マッピングの設計

マッピングのソース、ステージング領域またはターゲットとしてIBM DB2 for iSeriesを使用できます。

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

IBM DB2 for iSeriesとの間でのデータのロード

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

IBM DB2 for iSeriesでのデータの統合

Oracle Data Integratorには、IBM DB2 for iSeries用に最適化されたデータ統合戦略を実装するナレッジ・モジュールが用意されています。これらの最適化されたIBM DB2 for iSeries KMを表16-3にリストします。I

これらのKM以外に、汎用SQL KMも使用できます。

マッピング・フロー・タブのIKMの選択によって、統合のパフォーマンスおよび可能性が決まります。

表16-3 IBM DB2 for iSeriesにデータを統合するためのKM

KM 説明

IKM DB2 400 Incremental Update

増分更新モードでIBM DB2 for iSeriesのターゲット表にデータを統合します。

IKM DB2 400 Slowly Changing Dimension

データ・ウェアハウスでタイプ2の緩やかに変化するディメンションとして使用されるIBM DB2 for iSeriesのターゲット表に、データを統合します。

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

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

DB2 for iSeries固有の考慮事項

この項では、iSeries環境でOracle Data Integratorを使用する場合に固有の考慮事項を説明します。

iSeriesの代替接続方法

ほとんどの場合は、組込みIBM DB2 Datadirectドライバの使用が適切です。このドライバではTCP/IPネットワーク・レイヤーが直接使用され、他のコンポーネントをクライアント・マシンにインストールする必要はありません。iSeries上のDB2への接続方法は他にもあります。

クライアント・アクセスの使用

ODBCを介して、マシンにインストールされているIBMクライアント・アクセス・コンポーネントに接続することも可能です。この方法では良いパフォーマンスが得られず、リバース・エンジニアリングおよび他の一部の機能がサポートされません。そのため、この方法はお薦めしません。

IBM JT/400およびネイティブ・ドライバの使用

このドライバはjt400.zipファイルとして表示されるもので、使用するOracle Data Integratorインストールのdriversディレクトリにコピーする必要があります。

DB2 for iSeriesをiSeriesマシンにインストールされているJavaアプリケーションと接続する場合は、JT/400ドライバ(jt400.jar)のかわりにJT/400ネイティブ・ドライバ(jt400native.jar)を使用することがIBM社によって推奨されています。ネイティブ・ドライバは、DB2システムへの最適化されたアクセスを提供しますが、機能するのはiSeriesマシンからアクセスした場合のみです。

1つの接続で両方のドライバをシームレスにサポートするために、Oracle Data Integratorには組込みDriver Wrapper for AS/400が用意されています。このラッパーでは、可能な場合はネイティブ・ドライバを介して接続し、それ以外の場合はJT/400ドライバを使用します。

ドライバ・ラッパーを使用してデータ・サーバーを構成するには、次の情報を使用してドライバおよびURLをAS/400サーバーに変更します。

  • ドライバ: com.sunopsis.jdbc.driver.wrapper.SnpsDriverWrapper

  • URL: jdbc:snps400:<machine_name>[;param1=value1[;param2=value2...]]

トラブルシューティング

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

エラー・メッセージのトラブルシューティング

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

java.sql.SQLException: The application server rejected the connection.(Signon was canceled.)
at ...
at ...
...

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

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

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

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

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

接続エラー
  • UnknownDriverException

    JDBCドライバが不正です。ドライバの名前を確認してください。

  • The application requester cannot establish the connection.(<name or IP address>) Cannot open a socket on host: <name or IP address>, port: 8471 (Exception: java.net.UnknownHostException:<name or IP address>)

    Oracle Data Integratorがデータベースに接続できません。原因は、マシン名またはIPアドレスが無効である、DB2/400サービスが起動していない、またはAS/400上のTCP/IPインタフェースが起動していない、のいずれかです。同じマシン名またはIPアドレスを使用してAS/400マシンのpingを試行し、システム管理者に依頼して適切なサービスが起動したことを確認してください。

  • Datasource not found or driver name not specified

    JDBC URLで指定されたODBCデータソースが不正です。

  • The application server rejected the connection.(Signon was canceled.) Database login failed, please verify userid and password. Communication Link Failure. Comm RC=8001 - CWBSY0001 - ...

    使用されているユーザー・プロファイルが無効です。このエラーは、無効なユーザー名または不正なパスワードを入力した場合に発生します。

  • Communication Link Failure

    ODBC接続でエラーが発生しました。詳細は、クライアント・アクセスのドキュメントを参照してください。

  • SQL5001 - Column qualifier or table &2 undefined. SQL5016 - Object name &1 not valid for naming convention

    使用するJDBC接続またはODBCデータソースが、不正な命名規則を使用するように構成されています。ODBCアドミニストレータを使用して正しい(*SQLまたは*SYS)命名規則が使用されるようにデータソースを変更するか、JDBC URLで適切なオプションを使用して命名規則を強制します(例: jdbc:as400://192.0.2.1;naming=system)。物理スキーマのローカル・オブジェクト・マスクでシステムの命名規則を使用する場合は、%SCHEMA.%OBJECTのかわりに%SCHEMA/%OBJECTを入力する必要があることに注意してください。

    使用するアプリケーションが*SYS専用に設計されている場合を除いて、常に*SQLを使用する必要があります。Oracle Data Integratorでは、デフォルトで*SQL命名規則が使用されます。

  • SQL0204 &1 in &2 type *&3 not found

    アクセスしようとしている表が存在しません。これは、コンテキスト選択または一連の操作でのエラーに関連する可能性があります(たとえば、この表が別のマッピングで作成する必要がある一時表である場合など)。

  • Hexadecimal characters appear in the target tables. Accentuated characters are incorrectly transferred.

    iSeriesコンピュータによって、ファイル、表およびイベント・フィールド(列)に言語識別子またはCCSIDが添付されます。CCSID 65535は、ファイルまたはフィールドを言語非依存(つまり、16進データ)として識別する汎用コードです。そのため、ドライバによる変換は実行されません。ファイルのCCSIDを更新しない場合は、JDBC URLでフラグccsid=<ccsid code>およびconvert _ccsid_65535=yes|noを使用して変換を強制できます。詳細は、ドライバのドキュメントを参照してください。

  • SQL0901 SQL system error

    このエラーは、DB2/400システムの内部エラーです。

  • SQL0206 Column &1 not in specified tables

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

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