14 Oracle GoldenGateレプリケーションのインスタンス化
内容は次のとおりです。
- インスタンス化プロセスの概要
インスタンス化手順では、ソース・データのコピーを作成し、そのコピーをターゲット・データベースにロードします。 - インスタンス化の前提条件
Oracle GoldenGateプロセスまたはネイティブ・データベース・ロード・プロセスを起動する前に、次の手順を実行する必要があります。 - 初期ロードの構成
Oracle GoldenGateでは、この項に示された次のロード方式が特にOracle Database用としてサポートされます。 - ターゲットのインスタンス化の実行
この手順では、ターゲット表のインスタンス化の間にOracle GoldenGateでソース上の進行中のトランザクション変更をキャプチャし、ターゲットに適用されるまで格納します。 - インスタンス化後の処理の監視および制御
ターゲットをインスタンス化し、レプリケーションが有効になったら、プロセスを制御し、レプリケーション環境の全体的な正常性を確認できます。 - 同期の確認
ソース・データとターゲット・データが同期されていることを確認するために、Oracle GoldenGate Veridata製品または独自のスクリプトを使用し、ソース・データとターゲット・データを選択して比較できます。 - Oracle GoldenGate環境のバックアップ
Oracle GoldenGateの処理を開始したら、障害に備えて処理の状態を残しておく上で、効果的なバックアップ・ルーチンが不可欠です。Oracle GoldenGateの作業ファイルをリストアできない場合、レプリケーション環境全体を再インスタンス化し、初期ロードを新たに完了する必要があります。
インスタンス化プロセスの概要
インスタンス化手順では、ソース・データのコピーを作成し、そのコピーをターゲット・データベースにロードします。
初期ロードではデータのポイントインタイム・スナップショットがキャプチャされます。Oracle GoldenGateでは、静的データのロード時に発生したトランザクション変更が適用され、その整合性が保たれます。インスタンス化の完了後、Oracle GoldenGateでは進行中のトランザクション変更の間、同期状態が保持されます。
Oracle GoldenGate処理をインスタンス化する場合、本番マシンにライブをデプロイする前にまずテスト環境でテストすることをお薦めします。これは、信頼できるソースのデータがレプリケーション・プロセスからアクセスされる可能性のあるアクティブ/アクティブまたは高可用性の構成で特に重要です。テストによって、ターゲットでの再ロードや他のトラブルシューティング・アクティビティのためにユーザー・アクティビティを中断することなく、構成の誤りやデータの問題を検出して解決できます。テストによって、インスタンス化プロセスが適切に構成されたことも保証されます。テストに成功した後、パラメータ・ファイルを本番装置にコピーし、本番データを使用して予測可能なインスタンス化を実行できます。
インスタンス化の前提条件
Oracle GoldenGateプロセスまたはネイティブ・データベース・ロード・プロセスを起動する前に、次の手順を実行する必要があります。
変更同期グループの構成および追加
ターゲット・データベースおよびレプリケーション環境のインスタンス化を実行するには、オンライン変更キャプチャおよび適用グループが存在し、適切に構成されている必要があります。次を参照してください。
親トピック: インスタンス化の前提条件
DDL処理の無効化
インスタンス化を実行する前に、DDLアクティビティを無効化する必要があります。インスタンス化の終了後、DDLを再開できます。手順は、「DDL処理の一時的な無効化」を参照してください。
親トピック: インスタンス化の前提条件
コリジョン処理の追加
この前提条件は、次のインスタンス化方法に適用されます。
この前提条件は、「Oracle Data Pumpを使用したロードの構成」に説明されているインスタンス化方法には適用されません
。
ソース・データベースがいずれかの初期ロード方式でアクティブな場合、Replicatパラメータ・ファイルにコリジョン処理ロジックを追加する必要があります。このロジックでは、静的データのターゲット表へのロードと、Oracle GoldenGateによるターゲット表へのトランザクション変更のレプリケートが同時に行われるために発生する競合が処理されます。
次のコリジョンを処理するには、HANDLECOLLISIONS
パラメータをReplicatパラメータに追加して解決します。
-
すでに存在する行の
INSERT
操作 -
存在しない行の
UPDATE
およびDELETE
操作
インスタンス化手順の最後に(手順で尋ねられたときに)、ReplicatパラメータからHANDLECOLLISIONS
を削除する必要があります。HANDLECOLLISIONS
の詳細は、『Oracle GoldenGateリファレンス』を参照してください。
HANDLECOLLISIONS
関数を使用して、ロードによる増分データ変更を調整するには、各ターゲット表に主キーと一意キーがある必要があります。アプリケーションでキーを作成できない場合、TABLE
およびMAP
パラメータのKEYCOLS
オプションを使用し、Oracle GoldenGateで使用する代替キーとなる列を指定します。キーを作成できない場合、影響を受けるロードのソース表を停止する必要があります。KEYCOLS
の詳細は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: インスタンス化の前提条件
ターゲット表の準備
ロードを高速に行い、エラーが起こらないようにするための推奨事項は、次のとおりです。
-
データ: ターゲット表が空であることを確認します。そうでない場合、行の重複エラーや既存の行とロードされる行との間に競合が発生することがあります。
-
索引: ターゲット表から索引を削除します。索引は、初期ロード・プロセスによって実行される挿入には不要で、速度を低下させます。ロードの完了後、索引を再度追加できます。
親トピック: インスタンス化の前提条件
初期ロードの構成
Oracle GoldenGateでは、この項に示された次のロード方式が特にOracle Database用としてサポートされます。
方法を選択してその構成手順に従い、ロード・プロセスとパラメータ・ファイルを作成します。パラメータ・ファイルを操作する場合は、『Oracle GoldenGateの管理』のOracle GoldenGateパラメータ・ファイルの使用に関する項を参照してください。
Oracle Data Pumpを使用したロードの構成
この方法では、Oracle Data Pumpユーティリティを使用して、ターゲット・データを構築します。コピーが停止したときのSCNで、Extract、データ・ポンプおよびReplicatを起動します。コピーに含まれているトランザクションは、整合性違反によるコリジョンを回避するためにスキップされます。プロセスの開始地点から、Oracle GoldenGateはデータ同期を維持します。
この方法では、初期ロードOracle GoldenGateプロセスは不要です。
親トピック: 初期ロードの構成
SQL*Loaderへダイレクト・バルク・ロードするための構成
次の図に、SQL*Loaderへダイレクト・バルク・ロードするための構成を示します。
この方法では、Oracle GoldenGate初期ロードExtractを構成して実行し、全ソース・レコードを抽出して初期ロードReplicatタスクに直接送信します。初期ロードReplicatタスクはSQL*Loaderと通信し、ダイレクトパス・バルク・ロードでデータをロードします。データ・マッピングと変換は、初期ロードExtractまたは初期ロードReplicat、あるいはその両方で行えます。ロード時、「統合モードでのキャプチャの構成」または「クラシック・モードでのキャプチャの構成」および「Oracle GoldenGateの適用の構成」で構成した変更同期グループによって増分変更がレプリケートされ、ロードの結果に反映されます。
制限事項:
-
この方法では、
LOB
またはLONG
のデータの抽出はサポートされません。かわりの方法については、「入力ファイルからSQL*Loaderへのインスタンス化の実行」を参照してください。 -
この方法では、サイズに関係なく、
LOB
を含むマテリアライズド・ビューはサポートされません。データの暗号化もサポートされません。
SQL*Loaderへダイレクト・バルク・ロードするための構成手順
親トピック: 初期ロードの構成
入力ファイルからSQL*Loaderへのロードの構成
この方法では、初期ロードExtractはソース表からソース・レコードを抽出し、抽出ファイルに外部ASCII形式で書き込みます。ファイルはSQL*Loaderによって読み取られます。ロード時、第4章で構成した変更同期グループによって増分変更がレプリケートされ、ロードの結果に反映されます。ロード処理の一環として、Oracle GoldenGateで初期ロードReplicatを使用して、データベース・ユーティリティに必要な実行ファイルと制御ファイルを作成します。制御ファイルは動的に生成され、変換ルールで事前構成できないため、すべてのデータ変換はソース・システムで初期ロードExtractによって実行される必要があります。
ファイルからSQL*Loaderへのロードを構成する手順
親トピック: 初期ロードの構成
ターゲットのインスタンス化の実行
この手順では、ターゲット表のインスタンス化の間にOracle GoldenGateでソースの進行中のトランザクション変更をキャプチャし、ターゲットに適用されるまで格納します。
ターゲット表のインスタンス化を実行するまでに、Oracle GoldenGate環境全体が変更のキャプチャと配信用に構成されている必要があります。Oracle GoldenGateを初期ロード・ユーティリティとして使用する場合は初期ロード・プロセスも同様です。
注意:
Extractが新しいOracle GoldenGate構成で初めて起動されたとき、開いているソース・トランザクションはスキップされます。Extractの起動後に開始されたトランザクションのみキャプチャされます。
Oracle Data Pumpを使用したインスタンス化の実行
Oracle Data Pumpでインスタンス化を実行するには、My Oracle Supportドキュメント1276058.1を参照してください。このドキュメントを入手するには、次のようにします。
http://support.oracle.com
に移動します。- 「Sign In」の下部から言語を選択し、Oracleシングル・サインオン(SSO)でログインします。
- 「Dashboard」で、見出し「Knowledge Base」を展開します。
- 「Enter search terms」の下の箇所で、ドキュメントID「
1276058.1
」を貼り付けるか入力し、「Search」をクリックします。 - 検索結果で「Oracle GoldenGate Best Practices: Instantiation from an Oracle Source Database [Article ID 1276058.1]」を選択します。
- 「Attachments」の下のリンクをクリックして、記事を開きます。
親トピック: ターゲットのインスタンス化の実行
SQL*Loaderへのダイレクト・バルク・ロードを使用する場合のインスタンス化の実行
これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。
親トピック: ターゲットのインスタンス化の実行
入力ファイルからSQL*Loaderへのインスタンス化の実行
注意:
データにマルチバイト文字がある場合、特にオペレーティング・システムのキャラクタ・セットがデータベースのキャラクタ・セットと異なる場合、SQL*Loader方法は推奨されません。
これ以降、Oracle GoldenGateでデータ変更の同期が続けられます。
親トピック: ターゲットのインスタンス化の実行
インスタンス化後の処理の監視および制御
ターゲットをインスタンス化し、レプリケーションが有効になったら、プロセスを制御し、レプリケーション環境の全体的な正常性を確認することができます。
Replicatを統合モードで構成した場合は、STATS REPLICAT
コマンドを使用し、直接適用モードで適用されたトランザクション数と比較した、統合モードで適用されたトランザクション数に関する統計を確認できます。
STATS REPLICAT group
このコマンドの出力によって、適用されたトランザクションの数、直接適用にリダイレクトされたトランザクションの数、直接トランザクション比率などの統計が示されます。この統計値により、統合Replicatが意図したとおりに実行されているかどうかを判断できます。環境に問題がなく、直接適用操作率が高い場合は、非統合Replicatの使用を検討します。統合Replicatで並列度を構成できます。
注意:
統計値を現実的なものにするために、適用統計を表示するのは、Oracle GoldenGate環境が適切に確立され、構成エラーが解決され、予期された処理エラーが適切に処理されたことが確認された後にしてください。
インバウンド・サーバー・コンポーネントごとに、V$
ビューで統合Replicatの実行時統計を確認することもできます(『Oracle Databaseリファレンス』を参照)。
-
リーダー統計は
V$GG_APPLY_READER
に記録され、読込みメッセージ数、使用されたメモリー、依存性カウントに関する統計が含められます。 -
適用コーディネータ統計は
V$GG_APPLY_COORDINATOR
に記録され、トランザクションレベルで統計値が記録されます。 -
適用サーバー統計は、
V$GG_APPLY_SERVER
に記録されます。このビューでは、適用サーバーの各プロセスの情報(parallelism
およびmax_parallelism
パラメータで制御された)が別個の行に記録されます。各適用サーバーの統計は、SERVER_ID
列で識別されます。0
のSERVER_ID
が存在する場合、ワークロードが引き下げられたために適用サーバーの集計が終了したことを示します。 -
データベースがReplicatから受信したメッセージ数に関する統計は、
V$GG_APPLY_RECEIVER
表に記録されます。
プロセスを制御する場合は、『Oracle GoldenGateの管理』のOracle GoldenGateプロセスの制御に関する項を参照してください。
すべてのプロセスが正常に実行され、エラーがエラー処理ルールに従って処理されることを確認するには、『Oracle GoldenGateの管理』の処理エラーへの対処に関する項を参照してください。Oracle GoldenGateには、プロセスのステータス、ラグ、警告およびその他の情報を表示するコマンドやログが用意されています。
次のビューの問合せの詳細は、『Oracle Databaseリファレンス』を参照してください。
-
V$GOLDENGATE_TABLE_STATS
: インバウンド・サーバーで処理された、レプリケートされた各表で発生したDMLおよびコリジョンの統計を確認する場合。 -
V$GOLDENGATE_TRANSACTION
: Oracle GoldenGateインバウンド・サーバーで処理されたトランザクションに関する情報を確認する場合。
同期の確認
ソース・データとターゲット・データが同期されていることを確認するために、Oracle GoldenGate Veridata製品または独自のスクリプトを使用し、ソース・データとターゲット・データを選択して比較できます。
Oracle GoldenGate環境のバックアップ
Oracle GoldenGateの処理を開始したら、障害に備えて処理の状態を残しておく上で、効果的なバックアップ・ルーチンが不可欠です。Oracle GoldenGateの作業ファイルをリストアできない場合、レプリケーション環境全体を再インスタンス化し、初期ロードを新たに完了する必要があります。
ベスト・プラクティスとして、バックアップ・ルーチンにOracle GoldenGateホーム・インストール全体を含めます。ディレクトリのルートに重要なサブディレクトリ、ファイルおよびプログラムが非常に多くあり、個別に追跡することは困難です。いずれにしても、最も重要なファイルがバックアップ領域の大半を占めるため、単純にインストール・ディレクトリ全体をバックアップすることは、高速で簡単なリカバリのためには理にかなっています。