36 Oracle GoldenGateシステムの準備

この章では、Oracle GoldenGateをサポートするためのシステムの準備に関するガイドラインを示します。

内容は次のとおりです。

Oracle TimesTen接続タイプの選択

Oracle TimesTenでは、ツール、ユーティリティおよびアプリケーションに対して、ダイレクト・モードおよびクライアントサーバー・モードという2つの個別の接続タイプがサポートされます。

ダイレクト・モード

ダイレクト・モードは、アプリケーションとデータベースの間のプロセス間通信(IPC)を排除する、非常に最適化されたローカル接続メカニズムです。これにより、オーバーヘッドが低減することで、低レイテンシと高スループットが実現します。ダイレクト・モードでは、クライアント・アプリケーションとデータベースは同じホスト内に存在する必要があります。

クライアントサーバー・モード

クライアントサーバー・モードは、従来のTCP/IPベースの接続メカニズムです。このモードでは、クライアント・アプリケーションはデータベースと同じホスト内に存在する可能性がありますが、より一般的には、別のホストで実行され、ネットワーク経由で接続されます。クライアントサーバー・モードでは、オーバーヘッドおよびネットワーク・ラウンド・トリップが増加するため、ダイレクト・モードよりもパフォーマンスが低くなります。

Oracle GoldenGateでは、Oracle TimesTenに対して両方のタイプの接続がサポートされるため、要件に基づいて最も適切な接続を使用できます。

環境変数の設定

続行する前に、必要なシステム環境変数が導出されていることを確認します。Oracle TimesTenと対話するすべてのセッションまたはプロセスには、正しい環境設定が必要です。すべてのOracle TimesTenインスタンス(サーバーおよびクライアント)には、必要な環境変数を設定するためのスクリプトが含まれています。このスクリプトはinstance_home_dir/binにあり、ttenv.[c]shという名前です。これは、常にドット形式またはソース形式にする必要があり、直接実行されることはありません。

/instancepath/tt181でホストされているTimesTenインスタンスのbashシェル環境の設定例は、次のとおりです。
source /instancepath/tt181/bin/ttenv.sh
必要な環境変数を手動で設定することは可能ですが、お薦めしません。スクリプトを使用して、次を実行します。
  • 必要なすべての環境変数(複数存在します)が正しく設定されていることを確認します。

  • 将来のOracle TimesTenリリースで新しい変数を導入できないようにします。

TimesTen ODBC接続の構成

Oracle GoldenGate for TimesTenは、ODBC API (TimesTenのネイティブAPI)を使用してTimesTenに接続します。ODBC接続では、データ・ソース名(DSN)の概念を定義します。DSNは、アプリケーションでターゲット・データベースへの接続に使用されるパラメータを指定するために使用する論理名です。

Oracle GoldenGate for TimesTenを使用する場合、DBLOGINコマンドのSOURCEDB句など、様々なOracle GoldenGate構成設定で、ターゲットTimesTenデータベースのDSNを指定します。たとえば:
DBLOGIN SOURCEDB database, USERIDALIAS useralias

ここで、databaseに指定された値は、ターゲットTimesTenデータベースのDSNになります。

ダイレクト・モード接続を使用する場合、接続では、データベースをホストするOracle TimesTenインスタンス(サーバー・インスタンス)のsys.odbc.iniファイルで定義されたserver DSNを参照する必要があります。

クライアントサーバー・モードを使用する場合、接続では、データベースを管理するOracle TimesTenインスタンス(サーバー・インスタンス)のsys.odbc.iniファイル、またはより一般的にはOracle TimesTenクライアント・インスタンス(Oracle GoldenGateハブ・サーバーなど)のsys.odbc.iniファイルで定義された、client DSNを参照する必要があります。

Oracle TimesTenサーバーおよびクライアントDSNの定義の詳細は、TimesTen In-Memory Databaseオペレーション・ガイドを参照してください。

次に、ホストtthost1.mydomain.comにあるサーバーDSN myttdbで識別されるデータベースに接続する、クライアントDSN (myttdbcs)を定義するsys.odbc.iniエントリの例を示します。そのホスト上のTimesTenサーバーのデフォルト・リスナー・ポートは6625です。
[ODBC Data Sources]
myttdbcs=TimesTen 18.1 Client Driver
[myttdbcs]
TTC_SERVER=tthost1.mydomain.com/6625
TTC_SERVER_DSN=myttdb
ConnectionCharacterSet=AL32UTF8

処理のための表の準備

この項では、TimesTenのあるOracle GoldenGate環境で対処する必要がある表属性について説明します。

内容は次のとおりです。

ON DELETE CASCADE制約の削除

Oracle TimesTenのターゲット表に、ON DELETE CASCADE句を指定する外部キーが含まれており、その外部キーのターゲットである表がOracle GoldenGateレプリケーションのターゲットでもある場合は、エラーを回避するために、外部キー定義からON DELETE CASCADE句を削除する必要があります。

ソース表にemp_srcsalary_src、ターゲット表にemp_targsalary_targを使用している次の例について考えます。
  1. emp_srcに削除が発行されます

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

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

  4. 親削除が最初に到達し、emp_targに適用されます。

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

  6. salary_srcからカスケードされた削除がsalary_targに適用されます。

  7. 行は、すでにステップ5で削除されているため、見つかりません。

Oracle TimesTenでは、外部キー制約またはカスケード削除制約の無効化はサポートされていません。ON DELETE CASCADEを削除するには、表を削除してON DELETE CASCADE句を使用せずに表を再作成するか、ALTER TABLEを使用して外部キー制約を削除し、ON DELETE CASCADE句を使用せずに制約を再作成する必要があります。

表における行の一意性の保証

Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表にある形式の一意の行識別子が必要です。

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

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

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

    ノート:

    表に使用可能な他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きいWHERE句が使用される原因となります。
  4. 表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。ExtractのTABLEパラメータおよびReplicatのMAPパラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。Oracle GoldenGateリファレンスTABLE | MAPを参照してください。

Oracle GoldenGateの構成

Oracle TimesTenデータベースのためにOracle GoldenGate Replicatを構成する場合の前提条件とタスクについて学習します。

内容は次のとおりです。

Oracle GoldenGate Replicatの構成

この項では、大多数のターゲット・データベース・タイプで必要とされるReplicatパラメータについて説明します。追加のパラメータが必要な場合があります。ご使用のターゲット・データベース向けOracle GoldenGateのインストレーションと構成のドキュメント、およびOracle GoldenGateリファレンスを参照してください。

ターゲットのレプリケーション・サーバーまたはデータベース上で次のステップを実行します。

  1. Oracle GoldenGateの管理の手順に従ってManagerプロセスを構成します。
  2. Managerのパラメータ・ファイルで、PURGEOLDEXTRACTSパラメータを使用して、ローカル証跡からのファイルの消去を制御します。
  3. Replicatチェックポイント表を作成します。この目的には複数のオプションがあります。Oracle GoldenGateの管理を参照してください。
    DBLOGIN SOURCEDB myttdbcs USERIDLIAS useralias
    ADD CHECKPOINTTABLE owner.oggcheckpointtable
  4. Replicatを作成します。説明上、このReplicatをrepttと呼びます。
    ADD REPLICAT reptt, EXTTRAIL ./dirdat/remote_trail, CHECKPOINTTABLE owner.oggcheckpointtable

    EXTTRAIL引数を使用して、ソースOracle GoldenGateインストールでデータ・ポンプExtractを使用して指定したリモート証跡に、Replicatをリンクします。

  5. EDIT PARAMSコマンドを使用して、Replicatグループにパラメータ・ファイルを作成します。データベース環境に適用される他のパラメータに加え、例33-1に示されているパラメータを含めてください。

例36-1 Replicatグループのパラメータ

REPLICAT reptt
-- Specify database login information as needed for the database: 
TARGETDB myttdbcs, USERIDALIAS useralias
-- Specify tables for delivery: 
MAP owner.sourcetable, TARGET owner.targettable;

Oracle GoldenGateのその他の構成ガイドライン

Oracle GoldenGate環境をインストールして構成したら、次の内容を考慮してください。

初期同期の実行

初期ロードを構成するためにOracle GoldenGateを使用してトランザクションの変更を初めて送信する前に、ソース・データおよびターゲット・データの初期同期を実行します。Oracle GoldenGateの管理初期同期を参照してください。