17 Oracle GoldenGateのためのデータベースの準備 – クラシック・キャプチャ

この章では、Oracle GoldenGateによるソース・トランザクション・データのクラシック・キャプチャをサポートするための、データベース設定とサプリメンタル・ロギングの構成に役立つ情報を説明します。

内容は次のとおりです。

「データベースをフル・リカバリ・モデルに設定」

Oracle GoldenGateでは、SQL Serverソース・データベースをフル・リカバリ・モデルに設定すること、およびフル・データベース・バックアップが存在することが必要です。

リカバリ・モデルの確認または設定手順:

  1. SQL Server Management Studio for SQL Serverを使用してSQL Serverインスタンスに接続します。
  2. 「Databases」フォルダを展開します。
  3. ソース・データベースを右クリックして、「Properties」を選択します。
  4. 「Options」タブを選択します。
  5. 「Recovery」の下で、モデルを「Full」に設定します(まだ設定されていない場合)。
  6. データベースが単純リカバリだった場合、または一度もフル・データベース・バックアップをとったことがない場合、Extractを配置する前にフル・データベース・バックアップをとります。
  7. 「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 Server sysadminサーバー・ロールのメンバーである必要があります。

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次切捨てポイントを手動で移動する方法を確認してください。

SQL Serverによる2次切捨てポイントの管理

Extractが、(同じソース・データベースに対して) SQL Serverトランザクション・レプリケーション、またはOracle GoldenGate以外のアプリケーションによって構成されているSQL Server CDC (あるいはその両方)と並行して実行される場合は、NOMANAGESECONDARYTRUNCATIONPOINTオプションを指定してTRANLOGOPTIONSを使用します。SQL Serverが、2次切捨てポイントを管理します。

ログ・バックアップとバックアップ履歴の保持

Extractを停止する場合、または計画外の停止がある場合は、Extractがチェックポイントから再び起動できるように十分なログ・バックアップおよびバックアップ履歴を(msdbデータベース内に)保持します。Extractは、最も古い未コミットの作業ユニットの初めの箇所が含まれているトランザクション・ログまたはログ・バックアップと、それ以降のすべてのログ・バックアップのデータにアクセスできる必要があります。

処理中にExtractが必要とするデータ(オンライン・ログまたはバックアップ)が保持されていない場合、次のいずれかの修正処理が必要です。

  • Extractを変更して、ログ・データが使用できる後の時点から取得します(さらにターゲットで起こり得るデータ損失を受け入れます)。

  • ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再開します。

Extractのチェックポイントの位置を決定するには、INFO EXTRACT SHOWCHコマンドを使用します。詳細は、Oracle Fusion Middleware Oracle GoldenGateの管理for Windows and UNIXReplicatチェックポイントを参照してください。