7 Oracle GoldenGateレプリケーションのインスタンス化および起動
内容は次のとおりです。
インスタンス化プロセスについて
Oracle GoldenGate環境の初期化の際、最初のデータ同期を行い、Oracle GoldenGateプロセスを初めて起動します。これらの手順とともに、「DB2 for iのためのOracle GoldenGateの構成」でパラメータ・ファイルを作成したプロセス・グループを作成します。
Extractプロセス・グループを作成するには、データ取得のための最初の開始位置を確定する必要があります。この最初の位置は、次のいずれかに基づくトランザクション境界をベースにします。
-
タイムスタンプ
-
ジャーナルの最後
-
特定のシステム順序番号
-
ジャーナルにおける特定の順序番号
Extractを初めて起動してデータの取得を開始すると、指定した開始点より後に発生したトランザクション・データはすべて取得されますが、開始点より前に発生したデータは取得されません。破棄される可能性のある進行中のトランザクションの途中でExtractが起動されないことを保証するには、取得対象の表を非アクティブ状態に設定します。ALCOBJ
コマンドを使用してシステムを制限付きの状態にしてオブジェクトまたはライブラリをロックするか、それらの表の現在のトランザクションをすべて特定の時点で停止します。
初期化の完了後、ロックしたオブジェクトのロックを解除することを忘れないでください。これを行うには、オブジェクトをロックしたセッションからログオフするか、OS/400コマンドラインからDLCOBJ
コマンドを使用します。
インスタンス化の前提条件
Oracle GoldenGateプロセスまたはネイティブ・データベース・ロード・プロセスを起動する前に、次のステップを実行する必要があります。
変更の取得および配信の構成
レプリケーション環境のインスタンス化の準備ができるまでに、「DB2 for iのためのOracle GoldenGateの構成」の説明に従って完成したパラメータ・ファイルを使用してExtractおよびReplicatのプロセス・グループをすべて構成する必要があります。
さらに、このマニュアルに記載されている他の設定要件をすべて満たす必要があります。
親トピック: インスタンス化の前提条件
コリジョン処理の追加
ソース・データベースが初期ロード時にアクティブなままである場合、Replicatパラメータ・ファイルにコリジョン処理ロジックを追加する必要があります。このロジックでは、静的データのターゲット表へのロードと、Oracle GoldenGateによるターゲット表へのトランザクション変更のレプリケートが同時に行われるために発生する競合が処理されます。
コリジョンを処理するには、HANDLECOLLISIONS
パラメータをReplicatパラメータ・ファイルに追加して、次を解決します。
-
すでに存在する行の
INSERT
操作。 -
存在しない行の
UPDATE
およびDELETE
操作。
このパラメータの詳細は、『Oracle GoldenGate Windows and UNIXリファレンス・ガイド』を参照してください。
親トピック: インスタンス化の前提条件
ターゲット表の準備
ロードを高速に行い、エラーが起こらないようにするための推奨事項は、次のとおりです。
-
データ: ターゲット表が空であることを確認します。そうでない場合、行の重複エラーや既存の行とロードされる行との間に競合が発生することがあります。
-
制約: 外部キー制約およびチェック制約をまだ無効にしていない場合は、無効にします。外部キー制約ではエラーが発生する可能性があり、チェック制約ではロード・プロセスが低速化する可能性があります。
-
索引: ターゲット表から索引を削除します。索引は、初期ロード・プロセスによって実行される挿入には不要で、速度を大幅に低下させます。ロードの完了後、索引を再度追加できます。
-
キー:
HANDLECOLLISIONS
関数を使用してロードによる増分データ変更を調整するには、各ターゲット表に主キーまたは一意キーが必要です。アプリケーションを通じてキーを作成できない場合、TABLE
パラメータおよびMAP
パラメータのKEYCOLS
オプションを使用して、Oracle GoldenGate用の代替キーとなる列を指定します。キーを作成できない場合、影響を受けるロードのソース表を停止する必要があります。
親トピック: インスタンス化の前提条件
インスタンス化手順の効率化
インスタンス化プロセスをより効率的に進めるための提案をいくつか次に示します。
プロセス・グループ間でのパラメータの共有
変更同期パラメータ・ファイルで使用するパラメータの一部は、初期ロードのExtractおよびReplicatパラメータ・ファイルにも必要です。共通性を利用するには、次の方法を使用します。
-
共通のパラメータを一方のパラメータ・ファイルから他方にコピーします。
-
共通のパラメータを中央のファイルに格納し、各パラメータ・ファイルで
OBEY
パラメータを使用して取得します。 -
共通のパラメータに対するOracle GoldenGateマクロを作成し、
MACRO
パラメータを使用して各パラメータ・ファイルからマクロをコールします。
親トピック: インスタンス化手順の効率化
並列プロセスの使用
並列の初期ロード・プロセスを構成し、初期ロードの実行時間を短くすることができます。同じプロセス・セット内で、外部キー関係とともに表を維持することが重要です。規模の大きい表は、別のプロセス・セットを使用するか、多数のプロセス・セット間でロードを単純に分配すると、規模の小さい表と分けることができます。並列プロセスを正しく構成するには、『Oracle GoldenGateの管理for Windows and UNIX』を参照してください。
親トピック: インスタンス化手順の効率化
初期ロードの構成
Oracle GoldenGateでは、Oracle専用の次のロード方式がサポートされます。
ファイルからReplicatへの初期ロードの構成
図initsyncreplicat.jpgの説明
Replicatを使用してターゲット・データを構築するには、初期ロードExtractを使用してソース表からソース・レコードを抽出し、それらのレコードを正規形式で抽出ファイルに書き込みます。初期ロードReplicatは、データベース・インタフェースを使用してこのファイルからデータをロードします。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。
ロード中、レコードは、一度に1件ずつターゲット・データベースに適用されるため、この方法はネイティブのDB2 for iロード・ユーティリティを使用するより非常に遅くなる可能性があります。この方法では、ソース・システムとターゲット・システムのいずれかでデータ変換を実行できます。
ファイルからReplicatへのロードを構成するには
親トピック: 初期ロードの構成
データベース・ユーティリティによる初期ロードの構成
図initsync_copyutil.jpgの説明
この図は、初期ロードとロード期間中の進行中のトランザクション変更の取得およびレプリケーションの並列フローを示しています。コピー・ユーティリティにより、データはファイルに書き込まれ、そのファイルはターゲットにロードされます。一方、Extractプロセスでは、変更データを取得し、Replicatで読み取ってターゲットに適用するターゲットの証跡に送信します。
DB2 for iのソース・システムとターゲット・システムの二者間で初期ロードを行う場合、DB2 for iシステムのユーティリティを使用してターゲット・データを構築できます。これを行うには、SAVOBJ
またはSAVLIB
コマンドを使用してターゲットにロードするファイルを保存した後、RSTOBJ
またはRSTLIB
コマンドを使用してターゲットでリストアします。
もう1つの方法は、DB2 for iコマンドのCPYTOIMPF
(インポート・ファイルにコピー)およびCPYFRMIMPF
(インポート・ファイルからコピー)を使用して、他のデータベースのバルク・ロード・ユーティリティで使用できるファイルを作成します。詳細は、DB2 for iインフォメーション・センターのドキュメントの異なるシステム間でのコピーに関する項を参照してください。
どちらの場合も、Oracle GoldenGate初期ロード・プロセスに特別な構成を必要としません。「DB2 for iのためのOracle GoldenGateの構成」で構成した変更同期プロセス・グループを使用します。コピーを作成してロードしている間に、変更同期Extractグループを起動して進行中のデータ変更を抽出します。コピーが終了したら、変更同期Replicatグループを起動して、コピーの適用中に変更された行を再同期します。これ以降、ExtractとReplicatの両方が継続的に実行され、データ同期が維持されます。「変更取得プロセスと変更配信プロセスの追加」を参照してください。
親トピック: 初期ロードの構成
変更取得プロセスと変更配信プロセスの追加
ノート:
初期ロードおよび変更取得を開始する準備が完了した時点、またはその直前に、次のステップを実行します。
次のステップでは、「DB2 for iのためのOracle GoldenGateの構成」で構成したOracle GoldenGate Extract、データ・ポンプおよびReplicatの各プロセスを設定します。"変更同期"プロセスと総称されるこれらのプロセスでは、次のことを行います。
-
ターゲットでロードが実行されている間に、進行中のソース変更を取得して適用します。
-
発生したコリジョンを調整します。
ノート:
できるだけ初期ロード・プロセスの開始予定の直前に、次のステップを実行します。これらのプロセスは、初期ロード・ステップ中に開始します。
プライマリExtractの追加
次のステップでは、変更データをキャプチャするプライマリExtractを追加します。
プライマリExtractの開始点について
プライマリExtractグループを追加するときに、データ取得の最初の開始位置を確定します。この最初の位置は、次のいずれかに基づいくトランザクション境界でもかまいません。
-
タイムスタンプ
-
ジャーナルの最後
-
特定のシステム順序番号
-
特定のジャーナル順序番号(ジャーナル別)
使用可能なオプションの前提は、グローバル開始点およびオプションのジャーナル固有の開始点です。
-
タイムスタンプによってジャーナルの最後またはシステム順序番号に位置を指定する場合は、適切なオプションを指定して
ADD EXTRACT
コマンドを使用します。このコマンドはすべてのジャーナルに対してグローバル開始点を確定するため、必須の最初のステップです。 -
ADD EXTRACT
コマンドの発行後、必要に応じて、適切なジャーナル・オプションを指定したALTER EXTRACT
コマンドを使用して、特定のジャーナル順序番号に特定のジャーナルの位置を指定できます。
親トピック: プライマリExtractの追加
必須およびオプションのExtractの開始点の確定
このステップでは、ADD EXTRACT
およびALTER EXTRACT
コマンドを使用して、必要な開始点を確定しています。
例7-1 タイムスタンプの開始点
ADD EXTRACT finance, TRANLOG, BEGIN 2011-01-01 12:00:00.000000
例7-2 NOW
の開始点
ADD EXTRACT finance, TRANLOG, BEGIN NOW
例7-3 システム順序番号の開始点
ADD EXTRACT finance, TRANLOG, SEQNO 2952
例7-4 ジャーナルの開始点
ALTER EXTRACT finance, SEQNO 1234 JOURNAL accts/acctsjrn
例7-5 ジャーナルおよびレシーバの開始点
ALTER EXTRACT finance, SEQNO 1234 JOURNAL accts/acctsjrn JRNRCV accts/jrnrcv0005
親トピック: プライマリExtractの追加
ローカル証跡の追加
このステップでは、取得されたデータがプライマリExtractによって書き込まれるローカル証跡を追加します。
ソース・システムのGGSCIで、ADD EXTTRAIL
コマンドを発行します。
ADD EXTTRAIL
pathname
, EXTRACT
group name
説明:
-
EXTTRAIL
では、証跡がローカル・システムに作成されるよう指定します。 -
pathname
は、2文字の名前を含めた、証跡の相対名または完全修飾名です。 -
EXTRACT
group
name
は、プライマリExtractグループの名前です。
例7-6
ADD EXTTRAIL /ggs/dirdat/lt, EXTRACT finance
親トピック: 変更取得プロセスと変更配信プロセスの追加
データ・ポンプExtractグループの追加
このステップでは、ローカル証跡を読み取り、データをターゲットに送信するデータ・ポンプを追加します。
ソース・システムのGGSCIで、ADD EXTRACT
コマンドを発行します。
ADD EXTRACT
group name
, EXTTRAILSOURCE
trail name
説明:
-
group name
は、データ・ポンプExtractグループの名前です。 -
EXTTRAILSOURCE
trail name
は、ローカル証跡の相対名または完全修飾名です。
例7-7
ADD EXTRACT financep, EXTTRAILSOURCE c:\ggs\dirdat\lt
親トピック: 変更取得プロセスと変更配信プロセスの追加
リモート証跡の追加
このステップでは、リモート証跡を追加します。Replicatによって準備されますが、この証跡はデータ・ポンプと関連付けられる必要があるため、ターゲットではなく、ソース・システムで追加される必要があります。
ソース・システムのGGSCIで、次のコマンドを発行します。
ADD RMTTRAIL
pathname
, EXTRACT
group name
説明:
-
RMTTRAIL
では、証跡がターゲット・システムに作成されることを指定します。pathname
は、2文字の名前を含めた、証跡の相対名または完全修飾名です。 -
EXTRACT
group name
は、データ・ポンプExtractグループの名前です。
例7-8
ADD RMTTRAIL /ggs/dirdat/rt, EXTRACT financep
親トピック: 変更取得プロセスと変更配信プロセスの追加
Replicatグループの追加
このステップでは、リモート証跡(ターゲットに自動的に作成)を読み取り、データ変更をターゲットOracleデータベースに適用するReplicatグループを追加します。
例7-9
ADD REPLICAT financer, EXTTRAIL c:\ggs\dirdat\rt
親トピック: 変更取得プロセスと変更配信プロセスの追加
ターゲットのインスタンス化の実行
この手順では、ターゲット表のインスタンス化の間にOracle GoldenGateでソースの進行中のトランザクション変更をキャプチャし、ターゲットに適用されるまで格納します。ターゲット表のインスタンス化を実行するまでに、Oracle GoldenGate環境全体が変更のキャプチャと配信用に構成されている必要があります。Oracle GoldenGateを初期ロード・ユーティリティとして使用する場合は初期ロード・プロセスも同様です。
ファイルからReplicatへのインスタンス化を実行するには
-
「インスタンス化の前提条件」の要件に対応していることを確認します。
-
ソース・システムとターゲット・システムで、GGSCIを実行してManagerプロセスを起動します。
START MANAGER
-
ソース・システムで、プライマリExtractグループとデータ・ポンプExtractグループを起動し、変更の抽出を開始します。
START EXTRACT
primary Extract group name
START EXTRACTdata pump Extract group name
-
ソース・システムのOracle GoldenGateがインストールされているディレクトリから、次のようにして初期ロードExtractを起動します。
$ /
GGS directory
/extract paramfile dirprm/initial-load Extract name
.prm reportfilepath name
説明:
initial-load Extract name
はパラメータ・ファイルの作成時に使用した初期ロードExtractの名前です。path name
はExtractレポート・ファイルの相対名または完全修飾名です(デフォルトでは、Oracle GoldenGateインストール・ディレクトリのdirrptサブディレクトリです)。 -
オペレーティング・システムの標準的なファイル表示方法を使用してExtractレポート・ファイルを表示し、初期抽出の進行状況および結果を確認します。
-
初期抽出が終了するまで待機します。
-
ターゲット・システムで、初期ロードReplicatを起動します。
$ /
GGS directory
/replicat paramfile dirprm/initial-load Replicat name
.prm reportfilepath name
説明:
initial-load Replicat name
はパラメータ・ファイルの作成時に使用した初期ロードReplicatの名前です。path name
はReplicatレポート・ファイルの相対名または完全修飾名です(デフォルトでは、Oracle GoldenGateインストール・ディレクトリのdirrptサブディレクトリです)。 -
初期ロードReplicatの実行が終了したら、オペレーティング・システムの標準的なファイル表示方法を使用してReplicatレポート・ファイルを表示し、結果を確認します。
-
ターゲット・システムで、変更のレプリケーションを開始します。
START REPLICAT
Replicat group name
-
ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。
INFO REPLICAT
Replicat group name
-
初期ロード中に生成されたすべての変更データがReplicatにより適用されたことを確認するまで、
INFO REPLICAT
コマンドを発行し続けます。たとえば、初期ロードExtractが12:05に停止した場合、Replicatによってその時刻までデータが適用されていることを確認します。 -
ターゲット・システムで、次のコマンドを発行して
HANDLECOLLISIONS
パラメータをオフにし、初期ロードのエラー処理を無効化します。SEND REPLICAT
Replicat group name
, NOHANDLECOLLISIONS -
ターゲット・システムで、Replicatのパラメータ・ファイルを編集して
HANDLECOLLISIONS
パラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONS
が再度有効化されることを防止します。注意:
ローカル・オペレーティング・システムのものとは異なる文字セットを使用した既存のパラメータ・ファイル(
CHARSET
オプションを使用して別の文字セットを指定したファイルなど)は、VIEW PARAMS
コマンドまたはEDIT PARAMS
コマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。 -
パラメータ・ファイルを保存して閉じます。
これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。
親トピック: ターゲットのインスタンス化の実行
データベース・ユーティリティによるインスタンス化を実行するには
-
「インスタンス化の前提条件」の要件に対応していることを確認します。
-
ソース・システムとターゲット・システムで、GGSCIを実行してManagerプロセスを起動します。
START MANAGER
-
ソース・システムで、プライマリExtractグループとデータ・ポンプExtractグループを起動し、変更の抽出を開始します。
START EXTRACT
primary Extract group name
START EXTRACTdata pump Extract group name
-
ソース・システムで、コピーの作成を開始します。
-
コピーが終了するまで待機し、完了した時刻を記録します。
-
Replicatのパラメータ・ファイルを表示して、
HANDLECOLLISIONS
パラメータがリストされていることを確認します。そうされていない場合は、ファイルを編集してパラメータをファイルに追加します。EDIT PARAMS
Replicat group name
ノート:
ローカル・オペレーティング・システムのものとは異なる文字セットを使用した既存のパラメータ・ファイル(
CHARSET
オプションを使用して別の文字セットを指定したファイルなど)は、VIEW PARAMS
コマンドまたはEDIT PARAMS
コマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。 -
ターゲット・システムで、変更のレプリケーションを開始します。
START REPLICAT
Replicat group name
-
ターゲット・システムで、次のコマンドを発行して変更のレプリケーションのステータスを確認します。
INFO REPLICAT
Replicat group name
-
初期ロード中に生成されたすべての変更データが変更のレプリケーションにより適用されたことを確認するまで、
INFO REPLICAT
コマンドを発行し続けます。前に記録した完了時刻を参照してください。たとえば、コピーが12:05に停止した場合、変更のレプリケーションによってその時刻までデータが適用されていることを確認します。 -
ターゲット・システムで、次のコマンドを発行して
HANDLECOLLISIONS
パラメータをオフにし、初期ロードのエラー処理を無効化します。SEND REPLICAT Replicat group name, NOHANDLECOLLISIONS
-
ターゲット・システムで、Replicatのパラメータ・ファイルを編集して
HANDLECOLLISIONS
パラメータを削除します。これによって、次回Replicatが起動したときにHANDLECOLLISIONS
が再度有効化されることを防止します。注意:
ローカル・オペレーティング・システムのものとは異なる文字セットを使用した既存のパラメータ・ファイル(
CHARSET
オプションを使用して別の文字セットを指定したファイルなど)は、VIEW PARAMS
コマンドまたはEDIT PARAMS
コマンドを使用して表示や編集を行わないでください。そのようなパラメータ・ファイルはGGSCIの外部から表示してください。そうしないと、内容が破損する可能性があります。 -
パラメータ・ファイルを保存して閉じます。
これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。
親トピック: ターゲットのインスタンス化の実行
インスタンス化後の処理の監視
ターゲットをインスタンス化し、レプリケーションが有効になったら、ステータス、ラグおよびレプリケーション環境の全体的な状態を表示して、プロセスが適切に実行され、Oracle GoldenGateエラー・ログに警告がなく、ラグが許容レベルであることを確認する必要があります。Oracle GoldenGateプロセスは、次の場所から表示できます。
-
GGSCI: プロセスの監視の詳細は、『Oracle GoldenGateの管理for Windows and UNIX』を参照してください。
-
Oracle GoldenGate Monitor: 製品の管理ドキュメントおよびオンライン・ヘルプを参照してください。Oracle GoldenGate Monitorでは、すべてのOracle GoldenGateインスタンスをグラフィックベースで監視する環境を提供します。
また、Oracle GoldenGate構成のすべての表について取得および配信が実行されていることと、ソースとターゲットのデータが同期していることを確認する必要もあります。このために、Oracle GoldenGate Veridata製品を使用できます。
Oracle GoldenGate環境のバックアップ
Oracle GoldenGateの処理を開始したら、障害に備えて処理の状態を残しておく上で、効果的なバックアップ・ルーチンが不可欠です。Oracle GoldenGateの作業ファイルをリストアできない場合、レプリケーション環境全体を再インスタンス化し、初期ロードを新たに完了する必要があります。
ベスト・プラクティスとして、バックアップ・ルーチンにOracle GoldenGateホーム・インストール全体を含めます。このディレクトリには、重要なサブディレクトリ、ファイルおよびプログラムが格納されます。このディレクトリの最も重要な作業ファイルがバックアップ領域の大半を占めるため、高速で簡単なリカバリのために、単純にインストール・ディレクトリ全体をバックアップすることは理にかなっています。
起動後のExtractの位置指定
Extractの実行中ある時点で、データ・ストリーム内のExtractの位置を手動で設定する必要が生じることがあります。Extractの位置を再設定するには、GGSCIでALTER EXTRACT
コマンドを使用します。任意のExtractの読取り位置の特定には、INFO EXTRACT
コマンドで、ジャーナル・レシーバ情報を含め、Extract構成の各ジャーナルの位置を表示すると便利です。これらのコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
ノート:
ジャーナル間でトランザクションが分割される可能性があるため、システム順序番号による抽出ではすべてのジャーナルの同期が取られるので、任意のジャーナルの位置が単独で過去に再設定された場合、項目の再処理によるレイテンシが原因で、遅行しているジャーナルの読取りが追いつくまで、すでに読み取られたジャーナルがストールします。