この章では、ターゲット・データの初期ロードの構成、レプリケーションのインスタンス化に必要なプロセスの追加、インスタンス化の実行について手順を説明します。これらの手順を実行すると、ソースとターゲット間でデータの整合性が取られ(初期同期と呼ばれます)、整合性が常に保たれるように、Oracle GoldenGateによって進行中のトランザクション変更が取得および配信されます。
この章は次の項で構成されています:
Oracle GoldenGate環境の初期化の際、最初のデータ同期を行い、Oracle GoldenGateプロセスを初めて起動します。これらの手順とともに、第4章でパラメータ・ファイルを作成したプロセス・グループを作成します。
Extractプロセス・グループを作成するには、データ取得のための最初の開始位置を確定する必要があります。この最初の位置は、次のいずれかに基づくトランザクション境界をベースにします。
タイムスタンプ
ジャーナルの最後
特定のシステム順序番号
ジャーナルにおける特定の順序番号
Extractを初めて起動してデータの取得を開始すると、指定した開始点より後に発生したトランザクション・データはすべて取得されますが、開始点より前に発生したデータは取得されません。破棄される可能性のある進行中のトランザクションの途中でExtractが起動されないことを保証するには、取得対象の表を非アクティブ状態に設定します。ALCOBJ
コマンドを使用してシステムを制限付きの状態にしてオブジェクトまたはライブラリをロックするか、それらの表の現在のトランザクションをすべて特定の時点で停止します。
初期化の完了後、ロックしたオブジェクトのロックを解除することを忘れないでください。これを行うには、オブジェクトをロックしたセッションからログオフするか、OS/400コマンドラインからDLCOBJ
コマンドを使用します。
次の手順では、第4章で構成した基本的なレプリケーション環境をインスタンス化する方法を示します。手順は次のとおりです。
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用の代替キーとなる列を指定します。キーを作成できない場合、影響を受けるロードのソース表を停止する必要があります。
インスタンス化プロセスをより効率的に進めるための提案をいくつか次に示します。
Oracle GoldenGateでは、Oracle専用の次のロード方式がサポートされます。
方法を選択してその構成手順に従い、ロード・プロセスとパラメータ・ファイルを作成します。
Replicatを使用してターゲット・データを構築するには、初期ロードExtractを使用してソース表からソース・レコードを抽出し、それらのレコードを正規形式で抽出ファイルに書き込みます。初期ロードReplicatは、データベース・インタフェースを使用してこのファイルからデータをロードします。ロード中、変更同期グループは、増分変更を抽出してレプリケートします。その後、これらの変更は、ロードの結果に応じて調整されます。
ロード中、レコードは、一度に1件ずつターゲット・データベースに適用されるため、この方法はネイティブのDB2 for iロード・ユーティリティを使用するより非常に遅くなる可能性があります。この方法では、ソース・システムとターゲット・システムのいずれかでデータ変換を実行できます。
ファイルからReplicatへのロードを構成する手順
ソース・システムとターゲット・システムで、GGSCIを実行してManagerを起動します。
START MANAGER
ソース・システムで、次のコマンドを発行して初期ロードExtractのパラメータ・ファイルを作成します。このExtractには、トランザクション・データを取得するExtractグループとは異なる名前が必要です。
EDIT PARAMS initial-load Extract name
表5-1にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。
表5-1 ファイルからReplicatにデータをロードするための初期ロードExtractパラメータ
パラメータ | 説明 |
---|---|
SOURCEISTABLE |
Extractをソース表からレコードを直接抽出する初期ロード・プロセスとして指定します。 |
SOURCEDB |
データベース接続情報を指定します。
|
RMTHOST |
その他のオプションおよび暗号化の詳細は、Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。 |
ENCRYPTTRAIL BLOWFISH KEYNAME |
Blowfish暗号化でリモート・ファイルを暗号化します。セキュリティの詳細は、『Oracle GoldenGateの管理for Windows and UNIX』を参照してください。 |
RMTFILE
|
ロード・データを書き込むリモート・ファイルを指定します。Oracle GoldenGateでは、ロード中にこのファイルが作成されます。 注意: 抽出ファイルのサイズの上限は2GBです。 |
TABLE
|
初期データ抽出の対象となるソース表を指定します。 |
Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているExtractの適切なオプション・パラメータを入力します。
パラメータ・ファイルを保存して閉じます。
ターゲット・システムで、次のコマンドを発行して初期ロードReplicatのパラメータ・ファイルを作成します。このReplicatには、トランザクション・データを適用するReplicatグループとは異なる名前が必要です。
EDIT PARAMS initial-load Replicat name
表5-2にリストされている順序でパラメータを入力します。パラメータ文ごとに新規行を開始します。
表5-2 ファイルからReplicatにデータをロードするための初期ロードReplicatパラメータ
パラメータ | 説明 |
---|---|
SPECIALRUN |
初期ロードReplicatをチェックポイントを使用しない1回かぎりの実行として実装します。 |
END RUNTIME |
ロードの完了時に終了するように初期ロードReplicatに指示します。 |
TARGETDB |
データベース接続情報を指定します。
|
|
入力証跡を復号化します。 |
EXTFILE
|
Extractパラメータの |
SOURCEDEFS
|
データ定義の解釈方法を指定します。 |
MAP
|
ソース表とターゲット表の関係を指定します。 |
Oracle GoldenGateリファレンスfor Windows and UNIXにリストされているReplicatの適切なオプション・パラメータを入力します。
ファイルを保存して閉じます。
この図は、初期ロードとロード期間中の進行中のトランザクション変更の取得およびレプリケーションの並列フローを示しています。コピー・ユーティリティにより、データはファイルに書き込まれ、そのファイルはターゲットにロードされます。一方、Extractプロセスでは、変更データを取得し、Replicatで読み取ってターゲットに適用するターゲットの証跡に送信します。
DB2 for iのソース・システムとターゲット・システムの二者間で初期ロードを行う場合、DB2 for iシステムのユーティリティを使用してターゲット・データを構築できます。これを行うには、SAVOBJ
またはSAVLIB
コマンドを使用してターゲットにロードするファイルを保存した後、RSTOBJ
またはRSTLIB
コマンドを使用してターゲットでリストアします。
もう1つの方法は、DB2 for iコマンドのCPYTOIMPF
(インポート・ファイルにコピー)およびCPYFRMIMPF
(インポート・ファイルからコピー)を使用して、他のデータベースのバルク・ロード・ユーティリティで使用できるファイルを作成します。詳細は、DB2 for iインフォメーション・センターのドキュメントの異なるシステム間でのコピーに関する項を参照してください。
どちらの場合も、Oracle GoldenGate初期ロード・プロセスに特別な構成を必要としません。第4章で構成した変更同期プロセス・グループを使用します。コピーを作成してロードしている間に、変更同期Extractグループを起動して進行中のデータ変更を抽出します。コピーが終了したら、変更同期Replicatグループを起動して、コピーの適用中に変更された行を再同期します。これ以降、ExtractとReplicatの両方が継続的に実行され、データ同期が維持されます。「変更取得プロセスと変更配信プロセスの追加」を参照してください。
注意: 初期ロードおよび変更取得を開始する準備が完了した時点、またはその直前に、次の手順を実行します。 |
次の手順では、第4章で構成したOracle GoldenGate Extract、データ・ポンプおよびReplicatの各プロセスを設定します。"変更同期"プロセスと総称されるこれらのプロセスでは、次のことを行います。
ターゲットでロードが実行されている間に、進行中のソース変更を取得して適用します。
発生したコリジョンを調整します。
注意: できるだけ初期ロード・プロセスの開始予定の直前に、次の手順を実行します。これらのプロセスは、初期ロード手順中に開始します。 |
次の手順では、変更データをキャプチャするプライマリExtractを追加します。
プライマリExtractグループを追加するときに、データ取得の最初の開始位置を確定します。この最初の位置は、次のいずれかに基づいくトランザクション境界でもかまいません。
タイムスタンプ
ジャーナルの最後
特定のシステム順序番号
特定のジャーナル順序番号(ジャーナル別)
使用可能なオプションの前提は、グローバル開始点およびオプションのジャーナル固有の開始点です。
タイムスタンプによってジャーナルの最後またはシステム順序番号に位置を指定する場合は、適切なオプションを指定してADD EXTRACT
コマンドを使用します。このコマンドはすべてのジャーナルに対してグローバル開始点を確定するため、必須の最初の手順です。
ADD EXTRACT
コマンドの発行後、必要に応じて、適切なジャーナル・オプションを指定したALTER EXTRACT
コマンドを使用して、特定のジャーナル順序番号に特定のジャーナルの位置を指定できます。
この手順では、ADD EXTRACT
およびALTER EXTRACT
コマンドを使用して、必要な開始点を確定しています。
GGSCIを実行します。
ADD EXTRACT
コマンドを発行し、プライマリExtractグループを追加してグローバル開始点を確定します。
ADD EXTRACTgroup name
, TRANLOG { , BEGIN {NOW |yyyy-mm-dd
[hh:mi
:[ss
[.cccccc
]]]} | , EOF | , SEQNOseqno
}
説明:
group name
は、トランザクション変更を取得するプライマリExtractグループの名前です。
TRANLOG
では、ジャーナルをデータ・ソースとして指定します。
BEGIN
では、指定の時間にデータの取得を開始することを指定します。2つのオプションのいずれかを選択します。NOW
は、BEGIN
が発行された同じ時間のタイムスタンプが押された1件目のレコードから開始します。yyyy-mm-dd[hh:mi:[ss[.cccccc]]]
は、明示されたタイムスタンプから開始します。このタイムスタンプからログが使用可能になります。
SEQNO seqno
では、システム順序番号(最大20桁の10進数)から、またはその直後からデータの取得を開始することを指定します。
(オプション)次のコマンドを発行し、ADD EXTRACT
開始位置を変更して同じExtract構成の特定のジャーナルの開始位置に設定します。ALTER EXTRACT
で設定された特定のジャーナル位置は、ADD EXTRACT
またはALTER EXTRACT
ですでに設定されたグローバル位置に影響しません。ただし、ALTER EXTRACT
で設定されたグローバル位置は、同じExtract構成ですでに設定された特定のジャーナル位置よりも優先されます。
ALTER EXTRACTgroup name
, {ALTER EXTRACT {BEGIN {NOW |
yyyy-mm-dd
[hh
:mi
:[ss
[.cccccc
]]] [JOURNALjournal_library
/journal_name
[[JRNRCVreceiver_library
/receiver_name
]] | , EOF [JOURNALjournal_library
/journal_name
[[JRNRCVreceiver_library
/receiver_name
]] | , SEQNOseqno
[JOURNALjournal_library
/journal_name
[[JRNRCVreceiver_library
/receiver_name
]] }
注意: SEQNO は、ALTER EXTRACT のジャーナルで使用する場合に、ジャーナル全体でグローバルであるシステム順序番号ではなく、特定のジャーナルに相対的なジャーナル順序番号です。 |
この手順では、取得されたデータがプライマリExtractによって書き込まれるローカル証跡を追加します。
ソース・システムのGGSCIで、ADD EXTTRAIL
コマンドを発行します。
ADD EXTTRAIL
pathname
, EXTRACT
group name
説明:
EXTTRAIL
では、証跡がローカル・システムに作成されるよう指定します。
pathname
は、2文字の名前を含めた、証跡の相対名または完全修飾名です。
EXTRACT
group
name
は、プライマリExtractグループの名前です。
この手順では、ローカル証跡を読み取り、データをターゲットに送信するデータ・ポンプを追加します。
ソース・システムのGGSCIで、ADD EXTRACT
コマンドを発行します。
ADD EXTRACT
group name
, EXTTRAILSOURCE
trail name
説明:
group name
は、データポンプExtractグループの名前です。
EXTTRAILSOURCE
trail name
は、ローカル証跡の相対名または完全修飾名です。
この手順では、リモート証跡を追加します。Replicatによって準備されますが、この証跡はデータ・ポンプと関連付けられる必要があるため、ターゲットではなく、ソース・システムで追加される必要があります。
ソース・システムのGGSCIで、次のコマンドを発行します。
ADD RMTTRAIL
pathname
, EXTRACT
group name
説明:
RMTTRAIL
では、証跡がターゲット・システムに作成されることを指定します。pathname
は、2文字の名前を含めた、証跡の相対名または完全修飾名です。
EXTRACT
group name
は、データ・ポンプExtractグループの名前です。
この手順では、ターゲット表のインスタンス化の間にOracle GoldenGateでソースの進行中のトランザクション変更をキャプチャし、ターゲットに適用されるまで格納します。ターゲット表のインスタンス化を実行するまでに、Oracle GoldenGate環境全体が変更のキャプチャと配信用に構成されている必要があります。Oracle GoldenGateを初期ロード・ユーティリティとして使用する場合は初期ロード・プロセスも同様です。
「インスタンス化の前提条件」の要件に対応していることを確認します。
ソース・システムとターゲット・システムで、GGSCIを実行してManagerプロセスを起動します。
START MANAGER
ソース・システムで、プライマリExtractグループとデータ・ポンプExtractグループを起動し、変更の抽出を開始します。
START EXTRACTprimary 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 EXTRACTprimary 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ホーム・インストール全体を含めます。このディレクトリには、重要なサブディレクトリ、ファイルおよびプログラムが格納されます。このディレクトリの最も重要な作業ファイルがバックアップ領域の大半を占めるため、高速で簡単なリカバリのために、単純にインストール・ディレクトリ全体をバックアップすることは理にかなっています。
Extractの実行中ある時点で、データ・ストリーム内のExtractの位置を手動で設定する必要が生じることがあります。Extractの位置を再設定するには、GGSCIでALTER EXTRACT
コマンドを使用します。任意のExtractの読取り位置の特定には、INFO EXTRACT
コマンドで、ジャーナル・レシーバ情報を含め、Extract構成の各ジャーナルの位置を表示すると便利です。これらのコマンドの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
注意: ジャーナル間でトランザクションが分割される可能性があるため、システム順序番号による抽出ではすべてのジャーナルの同期が取られるので、任意のジャーナルの位置が単独で過去に再設定された場合、項目の再処理によるレイテンシが原因で、遅行しているジャーナルの読取りが追いつくまで、すでに読み取られたジャーナルがストールします。 |