ヘッダーをスキップ
Oracle® GoldenGate DB2 z/OSのためのOracle GoldenGateのインストールおよび構成
12c (12.1.2)
E52451-01
  目次へ移動
目次

前
 
次
 

3 Oracle GoldenGateのためのシステムの準備

この章には、Oracle GoldenGateをサポートするためのデータベースとシステムの準備のガイドラインが含まれます。

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

3.1 処理のための表の準備

Oracle GoldenGate環境で次の表属性に対処する必要があります。

トリガーおよびカスケード制約の無効化

行識別子の割当て

ROWID列の処理

3.1.1 トリガーおよびカスケード制約の無効化

ターゲット表で、トリガー、カスケード削除制約およびカスケード更新制約を無効にするか、Oracle GoldenGateデータベース・ユーザーが行った変更を無視するよう変更します。Oracle GoldenGateは、トリガーまたはカスケード制約から発生するDMLをレプリケートします。同じトリガーや制約がターゲット表でアクティブになると、レプリケートと重複し、データベースでエラーが返されます。次の例を検討してください。この例では、ソース表はemp_srcsalary_srcで、ターゲット表はemp_targsalary_targです。

  • emp_srcに対して削除が発行されます。

  • それによって、削除がsalary_srcにカスケードされます。

  • Oracle GoldenGateは、両方の削除をターゲットに送信します。

  • まず親削除が到着し、emp_targに適用されます。

  • 親削除によって削除がsalary_targにカスケードされます。

  • salary_srcのカスケードされた削除が、salary_targに適用されます。

  • 行は手順5ですでに削除されているため検出できません。

3.1.2 行識別子の割当て

Oracle GoldenGateは、レプリケートされた更新や削除に対応する正しいターゲット行を検出するために、ソース表およびターゲット表に特定の形式の一意の行識別子を必要とします。

3.1.2.1 使用する行識別子の種類のOracle GoldenGateによる決定方法

TABLEまたはMAP文でKEYCOLS句が使用されないかぎり、Oracle GoldenGateは、使用する行識別子を次の優先順位に従って選択します。

  1. 主キー

  2. タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順で最初の一意キー。

  3. 前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、データベースで一意キーでの使用を許可されているすべての列(キー内での使用がOracle GoldenGateでサポートされていない列やOracle GoldenGate構成から除外されている列は除く)で疑似キーを作成します。


注意:

表に使用できないその他のキーが存在する場合、または表にキーが存在しない場合、Oracle GoldenGateによって適切なメッセージがレポート・ファイルに記録されます。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きいWHERE句が使用される原因となります。


3.1.2.2 KEYCOLSを使用したカスタム・キーの指定

前述のタイプの行識別子が表に存在しないか、または、それらの識別子を使用しない場合は、常に一意の値が含まれている列が表にあれば、代替キーを定義できます。ExtractのTABLEパラメータおよびReplicatのMAPパラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定されたキーがOracle GoldenGateで検出される既存の主キーまたは一意なキーよりも優先されます。詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

3.1.3 ROWID列の処理

ROWID GENERATED ALWAYS(デフォルト)のデータ型の列を含むターゲット表に挿入しようとすると、次のODBCエラーで失敗します。

ODBC error: SQLSTATE 428C9 native database error -798. {DB2 FOR OS/390}{ODBC DRIVER}{DSN08015} DSNT408I SQLCODE = -798, ERROR: YOU CANNOT INSERT A VALUE INTO A COLUMN THAT IS DEFINED WITH THE OPTION GENERATED ALWAYS. COLUMN NAME ROWIDCOL.

次のいずれかを行って、ROWID列を含む表がOracle GoldenGateによって処理されるように準備します。

  • ターゲット表のROWID列がGENERATED BY DEFAULTとして定義されていることを確認します。

  • 表定義を変更できない場合、次の手順を使用して回避します。

ROWID GENERATE ALWAYSを回避する手順:

  1. ソース表に対するExtract TABLE文を作成し、その文で、ROWID列を除外するCOLSEXCEPT句を使用します。例を次に示します。

    TABLE tab1, COLSEXCEPT (rowidcol);
    

    COLSEXCEPT句で、ROWID列が取得されてターゲット表にレプリケートされないようにします。

  2. ターゲット表では、ReplicatがROWIDをキーとして使用しないようにします。これは、次のいずれかの方法で行えます。

    • ターゲット表定義で主キーを指定します。

    • キーを作成できない場合、表に対するReplicat MAPパラメータを作成し、その文にKEYCOLS句を使用してROWID列以外の一意の列を含めます。Replicatは、それらの列をキーとして使用します。例を次に示します。

      MAP tab1, TARGET tab1, KEYCOLS (num, ckey);
      

KEYCOLSの詳細は、3.1.2項「行識別子の割当て」を参照してください。

3.2 データベース接続の構成

次のガイドラインでは、適切なODBCドライバがインストールされ、構成されているものとします。

初期化パラメータの設定

初期化ファイルのパスの指定

ODBC接続互換性の確認

接続スレッド数の指定

3.2.1 初期化パラメータの設定

次のDB2 for z/OS初期化パラメータがOracle GoldenGateに適用されます。Oracle GoldenGateプロセスを起動する前に適切に設定される必要があります。

  • MVSDEFAULTSSID: DB2サブシステムに設定します。

  • LOCATION: DB2ブートストラップ・データセットに格納されているDB2の場所の名前に設定します。

  • MVSATTACHTYPE: RRSAF (Recoverable Resource Manager Services Attachment Facility)またはCAF (Call Attachment Facility)に設定します。IBM社は、RRSAFの使用を推奨しています。

  • MULTICONTEXT:: RRSAFを使用する場合、1に設定します。

  • PLANNAME: DB2プランに設定します。デフォルト・プラン名はDSNACLIです。

CURRENTAPPENSCH初期化パラメータ(キーワード)を使用しないでください。


注意:

CAF接続タイプを使用する場合、DB2に接続するExtractまたはReplicatプロセスのパラメータ・ファイルにOracle GoldenGate DBOPTIONSパラメータを含め、NOCATALOGCONNECTオプションを指定する必要があります。このパラメータによって、Oracle GoldenGateによる通常の試行が無効化され、DB2カタログに対して2つ目のスレッドが取得されなくなります。そうしない場合、ODBC operation failed: Couldn't connect to datasource for catalog queries.のようなエラー・メッセージを受信します。


3.2.2 初期化ファイルのパスの指定

次の例のように、z/OS UNIXプロファイルにDSNAOINI環境変数を設定し、ODBC初期化ファイルを指定します。

export DSNAOINI="/etc/odbc810.ini"

3.2.3 ODBC接続互換性の確認

DB2 ODBC初期化ファイルを正しく構成したことを確認するには、『DB2 UDB for z/OS ODBC Guide and Reference』のガイドラインに従います。重要な考慮事項の1つは、大カッコの開始と終了([および])のコーディングです。大カッコは、異なるコード化文字セットID (CCSID)で異なってエンコードされる可変文字ですが、ODBC初期化ファイルでは、IBM-1047 CCSIDのものである必要があります。DB2 ODBCは、他のCCSIDのカッコを認識しません。次の点に注意してください。

  • 1つ目(開始)のカッコは、16進文字X'AD' (0xAD)を使用する必要があります。

  • 2つ目(終了)のカッコは、16進文字X'BD' (0xBD)を使用する必要があります。

正しい大カッコのコードを設定するには、次のいずれかの方法を使用します。

  • OEDITでhexコマンドを使用して、各文字の16進コードを適切に変更します。

  • iconvユーティリティを使用してODBC初期化ファイルを変換します。たとえば、CCSID IBM-037からIBM-1047に変換するには、次のコマンドを使用します。

    iconv -f IBM-037 -t IBM-1047 ODBC.ini > ODBC-1047.ini 
    
    mv ODBC-1047.ini ODBC.ini 
    
  • ファイルの作成または変更時、CCSID IBM-1047を使用するよう端末エミュレータまたは端末構成を変更します。

3.2.4 接続スレッド数の指定

各Oracle GoldenGateプロセスはデータベース接続を行います。使用するプロセスの数および想定する他のDB2接続の数に応じて、DSNTIPE DB2 Thread Managementパネルで次のDB2システム・パラメータを調整する必要があります。

  • MAX USERS(マクロDSN6SYSP CTHREAD)

  • MAX TSO CONNECT(マクロDSN6SYSP IDFORE)

  • MAX BATCH CONNECT(マクロDSN6SYSP IDBACK)

RRSAFを使用する場合、次のように見込みます。

  • 次のものに対するプロセスごとに2つのDB2スレッド

    • Extract

    • Replicat

    • GGSCIコマンドDBLOGIN(データベースにログインします)

    • DEFGENユーティリティ(列マッピングのデータ定義を生成します)

  • IFIコールに対するExtract用に追加で1つのDB2スレッド。

  • 各ExtractおよびReplicatプロセスによって発行されるSQLEXECパラメータ文ごとに追加で1つのDB2スレッド。SQLEXECの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。

CAFを使用する場合、Oracle GoldenGateプロセスごとにスレッドは1つのみです。

3.3 ロード・モジュールへのアクセス

Oracle GoldenGate USSアクセス権をSDSNLOADシステム・ロード・ライブラリおよびDSNHDECPロード・モジュールに付与します。次のいずれかにライブラリを含めます。

前述のコマンドによって、シェル・コマンドまたはOracle GoldenGateプロセスが実行されるたびに、USSでSTEPLIB DD文と同等の割当てが行われます。APFを使用する場合、STEPLIB連結のすべてのライブラリはAPF許可されている必要があります。

3.4 ジョブの名前と所有者の指定

デフォルトでは、USSは、すべてのOracle GoldenGateプロセスのジョブ名と所有者を、起動したユーザーのものに設定します。_BPX_JOBNAMEおよび_BPX_USERID環境変数を設定してジョブ名またはユーザーを変更できます。あるいは、Oracle GoldenGateプロセスに対してz/OSジョブまたは開始済タスク・プロシージャを作成できます。詳細は、『z/OS System Services Planning』を参照してください。

3.5 WLMベロシティ目標の割当て

Managerプロセスを起動するユーザーは、通常他のOracle GoldenGateプロセスを実行するユーザーです。Oracle GoldenGateの処理は、WLMサブシステム・タイプOMVSのフォークされた子プロセスとして表示されます。次のガイドラインに基づいて、Oracle GoldenGateプロセスにワークロード・マネージャ(WLM)ベロシティ目標を割り当てます。

複数のWLMサービス・クラスをOracle GoldenGateプロセスに対して使用できます。次に、相対優先順位が保持されるOracle GoldenGateとその他の処理の例を、優先順位の高いものから低いものの順に示します。

  1. z/OSシステム・プロセス(UNIXカーネルとIRLMを含む)。

  2. プライマリExtractグループに対するDB2 for z/OSアドレス空間。

  3. オンラインまたはバッチの変更同期用に構成されているプライマリExtractグループと、それによってコールされるDB2ストアド・プロシージャ。

  4. z/OSトランザクション・マネージャ(CICS、IMSなど)。

  5. Extractデータ・ポンプ用Collector (Server)(使用されている場合)。

  6. (証跡から読み取る)ローカルExtractデータ・ポンプ(使用されている場合)。

  7. リモート証跡(リモート・サイトから受信されるファイル)用Collector。そのようなファイルには、NonStopシステムでExtract RMTBATCHパラメータによって作成されるQSAMファイルなどがあります。

  8. オンラインReplicatグループとそれによってコールされるDB2ストアド・プロシージャ。

  9. Managerプロセス(Oracle GoldenGateプロセスの起動と証跡のクリーンアップのためにのみ必要)。

  10. GGSCIおよび他のユーザーのUNIXおよびTSO/E端末処理。

  11. 初期ロードExtractとそれによってコールされるDB2ストアド・プロシージャ。

  12. 初期ロードReplicatとそれによってコールされるDB2ストアド・プロシージャ。

  13. 他のz/OSバッチ処理。

3.6 プロセスの監視

次に、z/OSシステムの機能を使用したOracle GoldenGateの監視に関する情報を示します。

Oracle GoldenGateメッセージの表示

Oracle GoldenGateプロセスの識別

更新操作の統計の解釈

更新操作の統計の解釈

3.6.1 Oracle GoldenGateメッセージの表示

システム・ログ・プロセス(syslogデーモンsyslogd)が実行されている場合、USSは、UNIXメッセージの優先順位に従って、構成されている宛先にOracle GoldenGateメッセージを転送します。syslogdの構成の詳細は、z/OS IP構成のドキュメントおよび『UNIX System Services Planning』を参照してください。

syslogdが実行されていない場合、Oracle GoldenGateは、コマンド出力、ステータス情報およびエラー・メッセージをシステム・コンソールに書き込みます。次のUNIXコマンドを使用して、コンソール・メッセージをOracle GoldenGate USSセッションおよびOracle GoldenGateレポート・ファイルにリダイレクトできます。

export _BPXK_JOBLOG=STDERR

3.6.2 Oracle GoldenGateプロセスの識別

システム管理機能(SMF)では、通常UNIXプロセス(Oracle GoldenGateプロセスを含む)ごとに別個のアカウンティング・レコードが作成されます。ただし、ユーザーがOMVSコマンドでデフォルトのSHAREASオプションを使用してUNIXシェルを起動した場合、またはユーザーが環境変数_BPX_SHAREASYESに設定した場合、複数のプロセスが同じアドレス空間で実行される場合があります。SMFは、1つ目のプロセスにのみプロセスIDを付与しますが、リソース消費は、実行されているすべてのプロセスを対象に集計されます。Oracle GoldenGateの場合、これは、処理がManagerプロセス(mgrという名前)の下に記録される可能性が高いということです。

DB2アカウンティング・トレースがSMF宛先についてもアクティブな場合、DB2は、次のOracle GoldenGateプロセスごとにSMFアカウンティング・レコードを作成します。

  • Extract

  • Replicat

  • Manager (Oracle GoldenGate表を保守する場合)。Oracle GoldenGate表の例としては、マーカー表やReplicatチェックポイント表があります。

  • Oracle GoldenGate DBLOGINコマンドを発行してデータベースにログインするGGSCIセッション。

3.6.3 更新操作の統計の解釈

DB2データベースで実行されたDML操作の実際の数は、Oracle GoldenGateによってレポートされる、抽出されたDML操作の数と一致しない場合があります。更新文で行が物理的に変更されない場合、DB2はその更新文を記録しません。そのため、Oracle GoldenGateがそれを検出したり、統計に含めることはできません。

3.7 グローバリゼーション関数のサポート

Oracle GoldenGateでは、グローバリゼーション・サポートが提供されます。このサポートを使用する場合に考慮する必要のある事項を次に示します。

ASCIIとEBCDICの両方を含むソースからのレプリケート

オブジェクト名内のマルチバイト文字の指定

3.7.1 ASCIIとEBCDICの両方を含むソースからのレプリケート

DB2ソース・システムから異なる文字セットのターゲットにレプリケートする際、ASCIIデータとEBCDICデータが混在している場合は、DB2の文字データのエンコーディングになんらかの配慮が必要です。各Replicatによる文字セットの変換では、ソース・データが1つの文字セットのものである必要があります。

ソース文字セットは、証跡ヘッダーに指定されます。したがって、Oracle GoldenGate証跡には、ASCIIデータまたはEBCDICデータのいずれかを含むことができますが、両方を含むことはできません。Unicodeの表は特別な構成がなくても処理され、文字セットは1つという要件の対象外です。

両方の文字エンコーディング・タイプが含まれているソースについては、次のオプションがあります。

  • すべての表に対して1つのExtractを使用し、 ASCIIまたはEBCDICのいずれかとして文字データを証跡に書き込ませます。

  • 異なるExtract(ASCII文字データを証跡に書き込むExtractとEBCDIC文字データを別の証跡に書き込むExtract)を使用します。2つのデータ・ストリームが個別に処理されるよう、各証跡を独自のデータ・ポンプ・プロセスとReplicatプロセスに関連付けます。

いずれのシナリオでも正しい文字セットを出力するには、TRAILCHARSETASCIIおよびTRAILCHARSETEBCDICパラメータを使用します。デフォルトはTRAILCHARSETEBCDICです。これらのパラメータが使用されない場合、ASCIIおよびEBCDICデータはそのまま証跡に書き込まれます。これらのパラメータを使用する場合、次の点に注意してください。

  • これらのパラメータがシングルバイトDB2サブシステムに対して使用される場合、Extractは、使用されているパラメータに応じて、接続先のサブシステムのASCIIまたはEBCDICのいずれかのシングルバイトCCSIDにすべての文字データを変換します(Unicodeは対象外で、Unicodeのまま処理されます)。

  • マルチバイトDB2サブシステムに対して使用される場合、Extractは、ASCIIまたはEBCDICの表のみ(およびUnicode)を取得します。文字データは、Extractの接続先のDB2 z/OSサブシステムのASCIIまたはEBCDICのいずれか(使用されているパラメータに応じる)の混合CCSIDで書き込まれます。

3.7.2 オブジェクト名内のマルチバイト文字の指定

パラメータ・ファイル内のスキーマ、表、列またはストアド・プロシージャの名前にマルチバイト文字が含まれる場合、名前を二重引用符で囲む必要があります。オブジェクト名の指定の詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。