22 Oracle GoldenGateのためのデータベースの準備 — CDCキャプチャ
SQL ServerのExtractによるキャプチャに使用するソース・データベースの表でサプリメンタル・ロギングを有効にする方法と、古いCDCステージング・データをパージする方法について学習します。
次のOracle By Exampleを使用すると、CDCキャプチャについてより詳しく学習できます。
SQL Server CDCキャプチャ・レプリケーションのためのOracle GoldenGateの使用http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html。
内容は次のとおりです。
CDCサプリメンタル・ロギングの有効化
CDC Extractでは、変更データを取得する方法としてSQL Serverチェンジ・データ・キャプチャ表が使用されるため、次の手順と要件に従い、Extractによって変更データが正しくロギング、保持および取得されるようにすることが重要です。
ADD TRANDATA
コマンドでサプリメンタル・ロギングを有効にすると、トランザクションの再構築に必要な情報をExtractで取得できます。
ADD TRANDATA
は、Oracle GoldenGateにより取得されるすべての表に対して発行する必要があり、そのためには、有効なスキーマを使用して、必要なOracle GoldenGateの表およびストアド・プロシージャを作成する必要があります。
CDC Extractのサプリメンタル・ロギングを有効にするには、次の手順を行います。
-
SQL Serverチェンジ・データ・キャプチャをデータベース・レベルで有効にします(まだ有効になっていない場合)。
-
EXECUTE sys.sp_cdc_enable_db
-
-
EXECUTE sys.sp_cdc_enable_table
を実行することで、ベース表ごとにサプリメンタル・ロギングが有効なチェンジ・データ・キャプチャ・ステージング表を作成します。また、CDC表ごとにトリガーを作成します。CDC表は、データベース内のシステム表の一部として存在し、cdc.OracleGG_basetableobjectid_CT
のようなネーミング規則を持っています。 -
ネーミング規則が
schema.OracleGGTranTables
のトラッキング表を作成します。この表を使用してCDC表のトランザクション・インジケータが格納され、CDC表のトリガーが起動されたときにこの表に移入されます。表はGLOBALS
ファイルのGGSCHEMA
パラメータにリストされたスキーマによって所有されます。 -
各CDC表に対して一意のフェッチ・ストアド・プロシージャを作成し、さらにExtractが機能するために必要なその他のストアド・プロシージャも作成します。ストアド・プロシージャは、
GLOBALS
ファイルのGGSCHEMA
パラメータにリストされたスキーマによって所有されます。 -
また、表に対するCDCの有効化の一環として、SQL Serverではデータベースごとに2つのジョブを作成します。
cdc.dbname_capture
cdc.dbname_cleanup
-
CDCキャプチャ・ジョブはSQL Serverのトランザクション・ログを読み取ってCDC表にデータを移入し、これらのCDC表からExtractはトランザクションを取得します。したがって、CDCキャプチャ・ジョブが常に実行されていることが非常に重要です。そのためには、SQL Serverエージェントが常に実行され、SQL Serverの起動時に自動的に実行できるように設定されている必要があります。
-
CDCキャプチャ・ジョブの重要なチューニング情報は、CDCキャプチャ方法の操作に関する考慮事項にあります。
-
Microsoftによって作成されるCDCクリーンアップ・ジョブは、Oracle GoldenGate ExtractがCDC表のデータを取得済であるかどうかに依存しません。そのため、追加のステップを行って、
TRANDATA
を有効にした直後にCDCクリーンアップ・ジョブを無効にするか削除し、Oracle GoldenGate専用のCDCクリーンアップ・ジョブを有効にする必要があります。詳細はCDC表の履歴データの保持を参照してください。
次のステップでは、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるデータベース・ユーザーが必要です。
CDCステージング・データのパージ
サプリメンタル・ロギングを有効にすると、Extractでトランザクションを再構成するために必要なデータが一連のSQL Server CDCシステム表に格納され、さらに、トランザクション内で操作をトラッキングするために使用されるOracle GoldenGateオブジェクトも格納されます。サプリメンタル・ロギングを有効にする際に、SQL Serverは自身のチェンジ・データ・キャプチャ・クリーンアップ・ジョブを作成し、デフォルトではこれを夜間に実行して、72時間より古いデータをパージします。SQL Server CDCのクリーン・アップ・ジョブは、Extractが該当するCDCシステム表のデータを引き続き必要とする可能性があることを認識しないため、Extractがキャプチャする前にそのデータを削除してしまうことがあります。
処理中にExtractが必要とするデータがCDCシステム表から削除されている場合、次のいずれかの修正処理が必要になる可能性があります。
-
Extractを変更して、CDCデータが使用可能になった後の時点から取得します(さらにターゲットで起こり得るデータ損失を受け入れます)。
-
ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再開します。
この状況を修正するために、SQL ServerのためのOracle GoldenGateにはogg_cdc_cleanup_setup.bat
プログラムが含まれています。このプログラムは、Oracle GoldenGateクリーン・アップ・ジョブ関連のストアド・プロシージャと表を作成するために使用します。
デフォルトでは、ExtractはこれらのOracle GoldenGateクリーン・アップ・ジョブ・オブジェクトが存在すると想定していて、存在しない場合は停止します。SQL Server CDCクリーン・アップ・ジョブとOracle GoldenGateクリーン・アップ・ジョブが同時に存在していると、Extractは警告を発行します。
Oracle GoldenGate CDCクリーン・アップ・ジョブ・タスク・オブジェクトに対するExtractのデフォルト・チェックは、ExtractのTRANLOGOPTIONS NOMANAGECDCCLEANUP
を使用して上書きできますが、この上書きは開発やテストを目的としている場合のみにしてください。
サプリメンタル・ロギングを有効にした直後、かつExtractを起動する前に、次のステップを使用して、Oracle GoldenGate CDCクリーンアップ・ジョブおよび関連付けられたオブジェクトを作成してください。オブジェクトが手動で削除された場合など、これらのステップを再実行してこの機能を再度有効にできます。
Oracle GoldenGate CDCクリーンアップ・ジョブおよびオブジェクトの作成手順:
ogg_cdc_cleanup_setup
ファイルは、Classic Architectureのホーム・ディレクトリにあります。
スクリプトはMicrosoftのsqlcmd
ユーティリティを使用するため、Oracle GoldenGateがインストールされているシステムにsqlcmd
がインストールされていることを確認してください。
これには、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるSQL Serverで認証されたデータベース・ユーザーが必要です。Windows認証は、.bat
スクリプトではサポートされません。
-
SQL ServerエージェントからデータベースのSQL Serverの
cdc.dbname_cleanup
ジョブを停止し、無効にします。または、次のコマンドでソース・データベースからドロップできますEXECUTE sys.sp_cdc_drop_job 'cleanup'
-
ogg_cdc_cleanup_setup.bat
ファイルを実行し、次の変数値を指定します。Windowsの場合:
ogg_cdc_cleanup_setup.bat createJob userid password databasename servername\instancename schema
Linuxの場合:
./ogg_cdc_cleanup_setup.sh createJob userid password databasename "servername,port" schema
前の例で、USER IDとパスワードは、
sysadmin
権限を持つユーザーの有効なSQL Serverログインとパスワードにする必要があります。databasename
、servername\instancename
またはservername
、port
は、ソース・データベース名、サーバーおよびインスタンス、またはSQL Serverが稼働しているサーバーとTCP/IPポートです。サーバー名のみがリストされている場合、デフォルトのインスタンスに接続されます。schemaは、GLOBALSファイルにGGSCHEMA
パラメータとともにリストされているスキーマ名です。このスキーマは、サプリメンタル・ロギング、チェックポイント表、ハートビート表およびOracle GoldenGate CDCクリーンアップ・ジョブなど、すべてのOracle GoldenGateオブジェクトで同一の必要があります。たとえば:
ogg_cdc_cleanup_setup.bat createJob ggsuser ggspword db1 server1\inst1 ogg
接続文字列でserver,port
を使用する場合、文字列を二重引用符で囲みます。次に例を示します:ogg_cdc_cleanup_setup.bat createJob login password source database "sql2016.samplestring.us-west-1.rds.amazonaws.com,1433" OGG schema name
Oracle GoldenGate CDCクリーンアップ・ジョブは作成時に、10分ごとに実行されるようにスケジュールされ、デフォルトの保存期間は72時間になります。ただし、保存期間に関係なく、ジョブによってExtractのリカバリ・チェックポイントのデータはパージされません。
Oracle GoldenGate CDCクリーンアップ・ジョブの詳細は、CDCキャプチャ方法の操作に関する考慮事項にあります。
双方向ループ検出の有効化
Oracle GoldenGateの双方向実装には、1つのソース・データベースのExtractが、別のソース・データベースからReplicatによって送信されたトランザクションを再取得しないように、ループ検出が必須です。
CDC Extractキャプチャ方法の場合、デフォルトでは、Replicatの配信先の表に対してサプリメンタル・ロギングが有効なかぎり、Extractが構成されているデータベースにReplicatによってコミットされたトランザクションは、Replicatからのトランザクションを再取得します。
Replicatによって適用されるトランザクションの再取得を無視するには、CDC Extractに対してTRANLOGOPTIONS FILTERTABLE
パラメータを使用する必要があります。フィルタリング表として使用する表は、Replicatのために作成が必要なOracle GoldenGateチェックポイント表です。
フィルタ表を作成してサプリメンタル・ロギングを有効化する手順:
このステップには、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるデータベース・ユーザーが必要です。
-
ソース・システムで、
GGSCI
を実行します -
次のコマンドを発行してデータベースにログインします。
DBLOGIN SOURCEDB DSN [,{USERID user, PASSWORD password | USERIDALIAS alias}]
前述の例の
SOURCEDB DSN
は、SQL Serverデータソースの名前です。USERID
userはデータベース・ログインで、PASSWORD
passwordは、データ・ソースがSQL Server認証を使用して接続する場合に必要なパスワードです。または、資格証明が資格証明ストアに格納されている場合、USERIDALIAS
aliasは、資格証明の別名です。統合Windows認証を使用するDSNにDBLOGIN
を使用する場合、GGSCIセッションのデータベースへの接続は、GGSCIを実行しているユーザーによるものになります。ADD TRANDATA
またはDELETE TRANDATA
を発行するには、このユーザーは、SQL Serversysadmin
サーバー・ロールのメンバーである必要があります。 -
ソース・データベースにデータを配信するためにReplicatによって使用されるOracle GoldenGateチェックポイント表を作成します。
例:
ADD CHECKPOINTTABLE ogg.ggchkpt
GLOBALS
ファイルのGGSCHEMA
パラメータで使用されるスキーマ名と同じものを使用することをお薦めします。 -
新しく作成されたチェックポイント表のサプリメンタル・ロギングを有効にします。
例:
ADD TRANDATA ogg.ggchkpt
-
チェックポイント表の情報とともにReplicatを追加します。
例:
ADD REPLICAT reptgt1, EXTTRAIL ./dirdat/e2,checkpointtable ogg.ggchkpt
-
フィルタリング表用のReplicatのチェックポイント表を使用して、
IGNOREREPLICATES
(デフォルトでオン)およびFILTERTABLE
パラメータによりExtractを構成します。TRANLOGOPTIONS IGNOREREPLICATES
TRANLOGOPTIONS FILTERTABLE ogg.ggchkpt