26 Oracle GoldenGateシステムの準備
この章は次の項で構成されています:
親トピック: SybaseでのOracle GoldenGateの使用
データベース構成
Extractプロセスは、ソースSybaseサーバーのSybase Replication APIを直接呼び出します。次の手順で、このサーバーのソース・データベースを、Oracle GoldenGateによるデータ・キャプチャをサポートするように構成する必要があります。
-
ExtractはSybase LTMを使用してSybaseトランザクション・ログを読み取るため、Sybase Replication Serverで構成されたデータベースに対して実行できません。同じデータベース上のトランザクション・ログを読み取ることができるコンテキストを保持できるのは、一度に1つのプロセスのみです。
-
Sybase Multisiteの可用性では、Sybase Replication Serverを利用してウォーム・スタンバイおよびターゲット・サブスクリプション・データベースにトランザクションをレプリケートします。Oracle GoldenGate for Sybaseはプライマリ・ウォーム・スタンバイからは取得できませんが、SAP Sybase Rep Serverがそのデータベースのトランザクション・ログを制御していないため、Multisiteの可用性ターゲット・サブスクリプション・データベースからは取得できます。
-
DSQUERY
変数を、Oracle GoldenGateが使用するデータベースを含むサーバーに設定します。 -
Extractプロセスには、2次ログ切捨て点を管理するための権限が必要です。詳細は、「2次切捨て点の初期化」を参照してください。
-
データベース・ページ・サイズを4K、8K、16K、32Kまたはそれ以上に構成します。
UPGRADECHECKPOINT table_name
コマンドを使用してターゲットのSybaseデータベースのチェックポイントを更新するには、プログラムによって作成される行サイズが2Kページを超えるように構成する必要があります。ターゲット・データベースのページ・サイズが2Kに構成されていると、チェックポイントのアップグレードは失敗します。これはReplicatに対してのみ有効です。
親トピック: Oracle GoldenGateシステムの準備
Oracle GoldenGateプロセス用データベース・ユーザー
Oracle GoldenGateには、データベース・ユーザー・アカウントが必要です。次のガイドラインに従ってこのアカウントを作成し、権限を割り当てます。
-
データの安全性確保と、Oracle GoldenGateの処理の的確な監視のため、他のユーザー、アプリケーション、プロセスには、Oracle GoldenGateデータベース・ユーザーとしてのログオンまたは操作を許可しないでください。
-
Oracle GoldenGate専用のデータベース・ユーザーを作成します。データベースに接続する必要のあるすべてのOracle GoldenGateプロセスに対して同じユーザーでもかまいません。
-
Extract (ソース・データベース)
-
Replicat (ターゲット・データベース)
-
DEFGEN
ユーティリティ(ソースまたはターゲット・データベース)
-
-
Extractプロセスには、ソース・データベースにアクセスするための権限が必要です。次の内の1つを実行します。
-
システム管理者権限を付与します。
-
ユーザー名に
replication_role
を割り当てます。レプリケーション・ロールを付与するためのコマンドは次のとおりです。sp_role 'grant', replication_role,
Extract_user
または
use dbname grant role replication_role to
Extract_user
ノート:
特定のDDLまたはDML操作では、
sa_role
とreplication_role
の両方を使用する必要があることがあります。 -
-
Replicatプロセスには、ターゲット・データベースに対する接続権限およびDML権限が必要です。
親トピック: Oracle GoldenGateシステムの準備
処理のための表の準備
次の表属性は、Oracle GoldenGate環境で処理する必要があります。
内容は次のとおりです。
トリガーおよびカスケード制約の無効化
ターゲットSybase表のトリガー、カスケード削除制約、カスケード更新制約を無効にするか、これらを変更してOracle GoldenGateデータベース・ユーザーによる変更が無視されるようにします。Oracle GoldenGateでは、トリガーまたはカスケード制約の結果として生成されるDMLがレプリケートされます。同じトリガーや制約がターゲット表でアクティブになった場合、レプリケートされたバージョンのために重複となり、データベースでエラーが返されます。ソース表にemp_src
とsalary_src
、ターゲット表にemp_targ
とsalary_targ
を使用している次の例について考えます。
-
emp_src
に対して削除が発行されます。 -
それによって、削除が
salary_src
にカスケードされます。 -
Oracle GoldenGateが、両方の削除をターゲットに送信します。
-
まず親削除が到着し、
emp_targ
に適用されます。 -
親削除によって、削除が
salary_targ
にカスケードされます。 -
salary_src
のカスケードされた削除が、salary_targ
に適用されます -
行は、すでにステップ5で削除されているため、見つかりません。
データベース・セッションの開始時にターゲットのトリガーを無効化するようにReplicatを構成するには、次のステップを実行します。
親トピック: 処理のための表の準備
行識別子の割当て
Oracle GoldenGateでは、レプリケートされた更新および削除のターゲット行を正確に特定するため、ソース表およびターゲット表になんらかの形の一意の行識別子が必要です。
親トピック: 処理のための表の準備
キーのない表での行の変更の制限
ターゲット表に主キーまたは一意のキーがない場合、重複する行が存在する可能性があります。Oracle GoldenGateで更新または削除されるターゲット表の行数が多くなりすぎ、ソース・データとターゲット・データの同期がとれなくなる可能性があります。警告するエラー・メッセージは表示されません。更新される行数を制限するには、Replicatパラメータ・ファイルでDBOPTIONS
パラメータにLIMITROWS
オプションを使用します。LIMITROWS
を使用すると1行しか処理されないため、ターゲット・システムにおけるOracle GoldenGateのパフォーマンスが向上する可能性があります。
親トピック: 処理のための表の準備
暗号化データのレプリケート
Oracle GoldenGateでは、システム暗号化パスワードによる暗号化列をサポートしていますが、ユーザー定義パスワードによる暗号化列はサポートしていません。データのキャプチャ元となる表が、Oracle GoldenGateの次の制限事項を満たしているかどうか確認します。
-
暗号化列を含む表は、主キーまたは一意のキーを持っている必要があります。
-
暗号化を使用する列を、主キーの一部に含むことはできません。
暗号化列は、データ・ファイルおよびログ内で暗号化されるので、Extractは、データベースからクリアテキスト値をフェッチするように構成する必要があります。このフェッチをトリガーするには、ExtractのTABLE
パラメータのFETCHCOLS
オプションおよびFETCHMODCOLS[EXCEPT]
オプションを使用します。FETCHCOLS
によってログに含まれていない値のフェッチが行われ、FETCHMODCOLS
またはFETCHMODCOLS[EXCEPT]
によってログに含まれている値のフェッチが行われます。これらのパラメータをあわせて使用することで、暗号化列が必ずデータベースからフェッチされるようになります。
暗号化をサポートするようにExtractを構成する方法の例を次に示します。この例で、暗号化列はcardnum
です。
TABLE ab.payments, FETCHCOLS (cardnum), FETCHMODCOLS (cardnum);
親トピック: 処理のための表の準備
トランザクション・ログの準備
DML操作をキャプチャするため、Oracle GoldenGateはオンライン・ログを読み取ります。Oracle GoldenGateの処理の継続性および完全性を確保するために、次の項に示すようにログを構成する必要があります。
内容は次のとおりです。
2次切捨て点の初期化
Oracle GoldenGateのExtractプロセスを実行する前に、ソース・システムで2次ログ切捨て点を設定します。Extractでは、2次切捨て点を使用して未処理のデータを識別します。
2次切捨て点を初期化するには、sa_role
権限を持つユーザーとしてデータベースにログオンし、次のコマンドを発行します。
dbcc settrunc( 'ltm', valid )
デフォルトでは、一度設定された2次切捨て点はExtractによって管理されます。Extractの停止時間が必要以上に長引かないようにしてください。長引いた場合はログがいっぱいになる可能性があり、データベースが停止します。この問題を解消するための唯一の方法は、2次切捨て点を無効化してOracle GoldenGateの外側で2次切捨て点を管理し、トランザクション・ログをパージすることです。Extractがまだ処理していないデータは失われ、ソース・データとターゲット・データの再同期化が必要になります。
2次切捨て点の管理方法を制御するには、TRANLOGOPTIONS
パラメータを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください
親トピック: トランザクション・ログの準備
ログのサイズ設定と保持
Extractの停止や計画外の停止が発生した後にExtractがチェックポイントから再開できるようにするため、ソース・システムに十分なログ・データを保持します。Extractは、コミットされていない、最も古い作業ユニットの開始点を含むログと、それ以降のすべてのログにアクセスできることが必要です。Extractのチェックポイントの位置を決定するには、INFO EXTRACT
コマンドを使用します。INFO EXTRACT
の詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。
処理中にExtractが必要とするデータが、オンラインまたはバックアップ・ログで保持されていない場合、次の修正処理のいずれかが必要になる可能性があります。
-
ログ・データが使用可能な、より遅い時点からキャプチャするようにExtractを変更します(さらに、ターゲットでデータ損失があれば受け入れます)。
-
ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再起動します。
古いアーカイブ・ファイルをソース・システムの新規バックアップで上書きするバックアップ・オプションやアーカイブ・オプションを使用しないでください。新規バックアップでは、古いファイルとは異なる名前を付けて別のファイルを作成します。これによって、Extractが特定のログを探す際にそのログが確実に存在することになり、また、サポートのために必要になった場合に確実にデータを使用できます。
親トピック: トランザクション・ログの準備
トランザクション・ロギングの有効化
ADD TRANDATA
コマンドを使用して、レプリケーション用に各ソース表をマークします。このコマンドでは、Sybaseのシステム・プロシージャsp_setreptable
およびsp_setrepcol
を使用します。ADD TRANDATA
は、データベース・インタフェースを介してそれらのプロシージャを使用するかわりに、表にマークするための方法として推奨されます。ただし、所有者またはシステム管理者は、必要に応じてそれらのプロシージャを使用できます。詳細は、Sybaseのドキュメントを参照してください。
ADD TRANDATAでレプリケーション用に表をマークする手順:
ノート:
ADD TRANDATA
の一部のオプションによって、sp_setrepcol
のALWAYS_REPLICATE
オプションが有効になります。LOB
列にNULL
値が含まれていると、(LOB
が更新されずに)表内の別の列が更新された場合、ALWAYS_REPLICATE
が有効になっていてもそのLOB
はキャプチャされません。
親トピック: トランザクション・ログの準備