17 Oracle GoldenGateのためのデータベースの準備 – クラシック・キャプチャ
内容は次のとおりです。
「データベースをフル・リカバリ・モデルに設定」
Oracle GoldenGateでは、SQL Serverソース・データベースをフル・リカバリ・モデルに設定すること、およびフル・データベース・バックアップが存在することが必要です。
リカバリ・モデルの確認または設定手順:
- SQL Server Management Studio for SQL Serverを使用してSQL Serverインスタンスに接続します。
- 「Databases」フォルダを展開します。
- ソース・データベースを右クリックして、「Properties」を選択します。
- 「Options」タブを選択します。
- 「Recovery」の下で、モデルを「Full」に設定します(まだ設定されていない場合)。
- データベースが単純リカバリだった場合、または一度もフル・データベース・バックアップをとったことがない場合、Extractを配置する前にフル・データベース・バックアップをとります。
- 「OK」をクリックします。
トランザクション・ログのバックアップ
SQL Server用のOracle GoldenGateキャプチャは、2つのモード(リアルタイム・キャプチャ・モードおよびアーカイブ・ログ専用モード)で実行できます。
アーカイブ・ログ専用モードでは、Extractはトランザクション・ログ・バックアップからのみ読み取ります。
リアルタイム・キャプチャ・モードでは、Extractプロセスでは、2次切捨てポイントの管理の構成方法に応じてログ・バックアップからの情報が必要な場合があります。この要件は、ログの記録がログ・バックアップにフラッシュされてオンライン・ログで使用できなくなったときに発生します。
いずれのモードでも、SQL Server用のOracle GoldenGateキャプチャでは、ログ・バックアップ・ファイルが次の条件を満たす必要があります。
-
ログ・バックアップは、
BACKUP LOG
コマンド(または相当するGUIコマンド)を発行して作成されたネイティブSQL Serverログ・バックアップです。サードパーティ・ログ・バックアップはサポートされません。 -
ログ・バックアップはネイティブSQL Serverの圧縮機能を使用して圧縮できます。
-
ログ・バックアップはDISKデバイスに作成されます。有効な例は次のとおりです。
BACKUP LOG dbname TO DISK = "c:\folder\logbackup.trn" BACKUP LOG dbname TO DISK = "\\server\share\logbackup.trn"
その他にお薦めする事項は次のとおりです。
-
既存のログ・バックアップを上書きしないでください。
-
ストライプ・ログ・バックアップはサポートされていません。
-
ログ・バックアップを同じファイルに追加することはお薦めできません。
-
圧縮および未圧縮のログ・バックアップを同じデバイスまたはファイルに混在させることはサポートされません。
サプリメンタル・ロギングの有効化
ここに記載されている説明は、SQL Serverのサポートされているすべてのバージョン用のOracle GoldenGateのソース・インストールに適用されます。
ADD TRANDATA
コマンドでサプリメンタル・ロギングを有効にすると、トランザクションの再構築に必要な情報をExtractで取得できます。デフォルトでは、SQL Serverは、この情報の一部のみをログに記録します。
Oracle GoldenGateで取得されるすべての表に対してADD TRANDATA
を発行する必要があります。ADD TRANDATA
では、SQL Serverのエディションによって、SQL Serverの異なる機能が使用されます。
-
Enterprise Editionでは、SQL Server用のチェンジ・データ・キャプチャ(CDC)が、指定された表に対する最小のチェンジ・データ・キャプチャ・オブジェクトを作成します。
-
Standard Editionでは、SQL Serverトランザクション・パブリケーションが作成され、各表のアーティクルが
.TRANDATA
で有効化されます。
Enterprise Edition
-
EXECUTE sys.sp_cdc_enable_db
を実行して、SQL Serverチェンジ・データ・キャプチャ用にデータベースを有効化します。 -
EXECUTE sys.sp_cdc_enable_table
を実行することにより、サプリメンタル・ロギングが有効な各ベース表に対してチェンジ・データ・キャプチャ表を作成します。 -
Oracle GoldenGateは、サプリメンタル・ロギングを有効にするために必要な場合を除いてCDC表を使用しません。
-
SQL ServerがCDCを有効化するとき、SQL Serverではデータベースごとに2つのジョブを作成します。
-
cdc.dbname_capture
-
cdc.dbname_cleanup
-
-
2次切捨てポイントの管理の
TRANLOGOPTIONS
オプションに関する情報を確認して、この必須パラメータと、このパラメータの2次切捨てポイントに対する作用、およびこれらのSQL Serverジョブを完全に理解する必要があります。
Standard Edition
-
SQL Server Standard Editionデータベースの表に対して
TRANDATA
を有効化するには、SQL Serverレプリケーション機能がインストールされていること、ディストリビュータが構成されていること、およびディストリビューション・データベースが作成されている必要があります。 -
Oracle GoldenGateトランザクション・パブリケーションがデータベースに対して作成され、そのデータベースのパブリケーション内に各表のアーティクルが作成されます。アーティクルは、データをディストリビューション・データベースへレプリケートしないように設定されています。ただし、SQL Server Standard Editionのサプリメンタル・ロギングを有効にするために必要です。
-
トランザクション・パブリケーションが作成されると、データベースのSQL Serverログ・リーダー・エージェント・ジョブが作成されます。 ログ・リーダー・エージェントジョブには、
instancename-dbname-#
というネーミング規則とREPL-LogReaderというジョブ・カテゴリがあります。 -
2次切捨てポイントの管理の
TRANLOGOPTIONS
オプションに関する情報を確認して、この必須パラメータと、このパラメータの2次切捨てポイントに対する作用、およびこれらのSQL Serverジョブを完全に理解する必要があります。
サプリメンタル・ロギングの有効化の手順
この手順には、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるデータベース・ユーザーが必要です。
1. ソース・システムで、GGSCIを実行します。
2. 次のコマンドを発行してデータベースにログインします。
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
サーバー・ロールのメンバーである必要があります。
3. GGSCIで、Extract構成内にある個々の表に対して次のコマンドを発行します。ワイルドカードを使用して複数の表の名前を指定できます。
ADD TRANDATA owner.table
ADD TRANDATA owner.*
親トピック: サプリメンタル・ロギングの有効化
2次切捨てポイントの管理
ソースSQL Serverデータベース内の1つ以上の表に対してADD TRANDATA
コマンドを使用してサプリメンタル・ロギングを有効にすると、以降のログ・バックアップの後、ログ領域を必要に応じて解放するために移動される必要のあるトランザクション・ログに2次切捨てポイントが作成されます。TRANLOGOPTIONS
パラメータを使用して、2次切捨てポイントの管理方法を制御します。TRANLOGOPTIONS
はSQL Server Extractの必須パラメータで、2次切捨てポイントの管理に使用可能な次のオプションが用意され、そのうちの1つを選択する必要があります。
Oracle GoldenGateによる2次切捨てポイントの管理
TRANLOGOPTIONS
の2つのオプションACTIVESECONDARYTRUNCATIONPOINT
およびMANAGESECONDARYTRUNCATIONPOINT
は、Oracle GoldenGate Extractプロセスに2次切捨てポイントを管理するよう指示します。次のような状況が生じた場合に、これらのオプションのいずれかを使用できます。
-
ExtractがSQL Serverトランザクション・レプリケーションと同時に(同じソース・データベースに対して)実行していない場合。
-
Oracle GoldenGate以外のアプリケーションによって構成されているSQL Serverチェンジ・データ・キャプチャ(CDC)。
注意:
SQL Serverトランザクション・レプリケーションやOracle GoldenGate以外のアプリケーションによって構成されたCDCが同時に実行されている場合、Extractに対してTRANLOGOPTIONS
ACTIVESECONDARYTRUNCATIONPOINT
またはMANAGESECONDARYTRUNCATIONPOINT
を使用すると、SQL Serverログ・リーダー・エージェントまたはCDC取得ジョブが失敗します。
TRANLOGOPTIONS
オプションおよびACTIVESECONDARYTRUNCATIONPOINT
オプションは、この項で説明されている様々な特性を持っています。
ACTIVESECONDARYTRUNCATIONPOINT
オプションには次の特性があります。
-
Extractでは、取得したトランザクションのみを対象に、2次切捨てポイントをトランザクション・ログに設定します。
-
ACTIVESECONDARYTRUNCATIONPOINT
により、Extractがオンライン・トランザクション・ログからトランザクションを取得するまで、トランザクションの切捨ては行われません。 -
Extractが取得するまでオンライン・データは切り捨てられないので、Extractはログ・バックアップから読み取る必要はありません。この方法の利点は、未処理のトランザクション・データを取得するためにExtractがログ・バックアップにアクセスする必要がある可能性があるということを気にすることなく、サードパーティのトランザクション・ログ・バックアップ・ソフトウェアを使用できることです。
-
オプション
ACTIVESECONDARYTRUNCATIONPOINT
を使用すると、Extractに重大な遅延がある場合、ログ・ファイルが大きくなる可能性があります。したがって、記憶域のパラメータを調整して、より大きなログに対応する必要があります。これは、トランザクション・ログのバックアップがトランザクション・ログをすぐに切り捨てることができないために発生します。切捨ては、Extractがデータの取得を終了した後にのみ行われます。 -
このオプションを使用するには、ソース・データベースから取得できるExtractが1つのみである必要があります。
-
このオプションは、アーカイブ・ログ・モードで実行中のExtractには無効です。
-
SQL Server Enterprise Editionを使用している場合、Extractを起動すると、ExtractはデータベースのCDCキャプチャ・ジョブを停止および削除し、データがどのCDC表にもロードされないようにします。サプリメンタル・ロギングの追加からExtractの起動までの間に、これらの表に対するトランザクションが発生した場合は、対応するCDC表にデータがある可能性があります。このデータはOracle GoldenGateによって使用されないため、手動で削除することも、これらのCDC表から切り捨てることもできます。さらに、ソース・データベースのCDCクリーンアップ・ジョブは無効化または削除できます。CDCキャプチャ・ジョブが削除された後は、もう機能しなくなります。
-
SQL Server Standard Editionを使用している場合、Extractの位置を設定する前に、ソース・データベースのSQL Serverログ・リーダー・エージェント・ジョブを手動で停止および無効化する必要があります。
MANAGESECONDARYTRUNCATIONPOINT
オプションには次の特性があります。
-
Extractは通常、ログの該当する切捨てポイントに高水位標を設定することにより、事前設定した時間間隔で切捨てポイントをトランザクション・ログに設定します。
-
以降のトランザクション・ログ・バックアップが作成されると、切捨てポイントより前のトランザクションはオンライン・トランザクション・ログから削除でき、これによりオンライン・ログの領域が解放されます。トランザクションがログ・バックアップにフラッシュされる前に、Extractがそのトランザクションをオンライン・ログから取得していなかった場合、Extractはログ・バックアップに切り替えて、バックアップからトランザクションを読み取ります。この機能に必要なログのバックアップには、ネイティブSQL Serverバックアップ・ユーティリティのみを使用します。このシナリオでは、サードパーティ・バックアップ・ソフトウェアは使用できません。
-
このオプションを使用すると、複数のExtractが同じソース・データベースから取得できます。単一のソース・データベースに複数のExtractがある場合は、このオプションを使用してExtractを構成する必要があります。
-
SQL Server Enterprise Editionを使用している場合、Extractを起動すると、ExtractはデータベースのCDCキャプチャ・ジョブを停止および削除し、データがどのCDC表にもロードされないようにします。サプリメンタル・ロギングの追加からExtractの起動までの間に、これらの表に対するトランザクションが発生した場合は、対応するCDC表にデータがある可能性があります。このデータはOracle GoldenGateによって使用されないため、手動で削除することも、これらのCDC表から切り捨てることもできます。さらに、ソース・データベースのCDCクリーンアップ・ジョブは無効化または削除できます。CDCキャプチャ・ジョブが削除された後は、もう機能しなくなります。
-
SQL Server Standard Editionを使用している場合、ソース・データベースのSQL Serverログ・リーダー・エージェント・ジョブを手動で停止および無効化する必要があります。
これらのオプションのいずれかを使用すると、Extractがログのバックアップ頻度よりも長い時間停止した場合、2次切捨てポイントは移動せず、その後のログ・バックアップ後もトランザクション・ログからトランザクションは削除されません。これにより、ログ・ファイルが最大サイズに増大することがあります。これが発生した場合は、Oracleサポートに連絡して、2次切捨てポイントを手動で移動する方法を確認してください。
親トピック: 2次切捨てポイントの管理
SQL Serverによる2次切捨てポイントの管理
Extractが、(同じソース・データベースに対して) SQL Serverトランザクション・レプリケーション、またはOracle GoldenGate以外のアプリケーションによって構成されているSQL Server CDC (あるいはその両方)と並行して実行される場合は、NOMANAGESECONDARYTRUNCATIONPOINT
オプションを指定してTRANLOGOPTIONS
を使用します。SQL Serverが、2次切捨てポイントを管理します。
親トピック: 2次切捨てポイントの管理
ログ・バックアップとバックアップ履歴の保持
Extractを停止する場合、または計画外の停止がある場合は、Extractがチェックポイントから再び起動できるように十分なログ・バックアップおよびバックアップ履歴を(msdbデータベース内に)保持します。Extractは、最も古い未コミットの作業ユニットの初めの箇所が含まれているトランザクション・ログまたはログ・バックアップと、それ以降のすべてのログ・バックアップのデータにアクセスできる必要があります。
処理中にExtractが必要とするデータ(オンライン・ログまたはバックアップ)が保持されていない場合、次のいずれかの修正処理が必要です。
-
Extractを変更して、ログ・データが使用できる後の時点から取得します(さらにターゲットで起こり得るデータ損失を受け入れます)。
-
ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再開します。
Extractのチェックポイントの位置を決定するには、INFO EXTRACT SHOWCH
コマンドを使用します。詳細は、Oracle Fusion Middleware Oracle GoldenGateの管理for Windows and UNIXのReplicatチェックポイントを参照してください。