この章では、Oracle GoldenGateによるソース・トランザクション・データの取得をサポートするための、データベース設定とサプリメンタル・ロギングの構成に役立つ情報を説明します。
この章の内容は次のとおりです。
Oracle GoldenGateでは、SQL Serverソース・データベースをフル・リカバリ・モデルに設定する必要があります。
リカバリ・モデルの確認または設定手順:
SQL Server Management Studio for SQL Serverを使用してSQL Serverインスタンスに接続します。
「Databases」フォルダを展開します。
ソース・データベースを右クリックして、「Properties」を選択します。
「Options」タブを選択します。
「Recovery」下で、「Model」がまだ「Full」に設定されていない場合は設定します。
データベースが単純リカバリだった場合、または一度もフル・データベース・バックアップをとったことがない場合、Extractを開始する前にフル・データベース・バックアップをとります。4.6項「Oracle GoldenGate起動前のフル・データベース・バックアップの作成」を参照してください。
「OK」をクリックします。
2次切捨てポイントの管理(4.5項を参照)の構成方法に応じて、Extractプロセスがソース・システムのログ・バックアップにアクセスする必要がある場合があります。これは、必要なログ・レコードがオンライン・ログになく、ログ・バックアップに移動されている場合に起こります。
Oracle GoldenGateでは、ソース・システムのログ・バックアップ・ファイルは次の条件を満たす必要があります。
ログ・バックアップ・ファイルは、バックアップが作成された元の場所にある必要があります。バックアップが移動される場合は、『Oracle GoldenGate Oracle GoldenGateリファレンスfor Windows and UNIX』
のTRANLOGOPTIONSのALTARCHIVELOGDESTオプションに関する項を参照して、このオプションを構成します。このパラメータは、Oracle GoldenGateが別の場所でバックアップ・ファイルを検索することを可能にしますが、バックアップ・ファイルが元の場所にない場合にのみ使用します。
バックアップはDISK
デバイスに作成する必要があります。
バックアップは、BACKUP LOG
コマンド(または相当するGUIコマンド)を発行して作成されたネイティブSQL Serverバックアップである必要があり、ネイティブSQL Serverの圧縮機能(SQL Server 2012のみ)を使用して圧縮できます。サードパーティ・ログ・バックアップ・ツールはサポートされません。
古いバックアップ・ファイルと同じ名前でバックアップ・ファイルを上書きしないでください。
ストライプ・ログ・バックアップはサポートされていません。
Extractプロセスのパフォーマンスを最良にするには、次のようにします。
バックアップ・ファイルごとに作成するログ・バックアップを1つのみにします。
Extractを停止する場合、または計画外の停止がある場合は、Extractがチェックポイントから再び起動できるように十分なログ・バックアップを保持します。Extractは、最も古い未コミットの作業ユニットの初めの箇所が含まれているトランザクション・ログまたはログ・バックアップと、それ以降のすべてのログ・バックアップのデータにアクセスできる必要があります。
処理中にExtractが必要とするデータ(オンライン・ログまたはバックアップ)が保持されていない場合、次のいずれかの修正処理が必要です。
ログ・データが取得可能な時点よりも後の時点から取得を実行し、ターゲット上で起こり得るデータ損失を受け入れるようにExtractを変更します。
ソース表とターゲット表を再同期化して、Oracle GoldenGate環境を設定からやりなおします。
ユーザーの仲介なしでExtractが切捨てポイントを保持し、常に必要なログを使用できるようにする方法は、 4.5.3項「2次切捨てポイントとExtractとの同期の維持」を参照してください。
Extractのチェックポイントの位置を決定するには、INFO EXTRACT
コマンドを使用します。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。
ここに記載されている説明は、SQL Serverのすべてのサポートされているバージョン用のOracle GoldenGateの新規インストールに適用されます。ADD TRANDATA
コマンドを使用してサプリメンタル・ロギングを有効にすると、ターゲットでのSQL操作の再構築に必要な情報をExtractで取得できます。これは、SQL Serverがデフォルトで実行するログよりも多くの情報を持っています。
Oracle GoldenGateでレプリケートされるすべての表に対してADD TRANDATA
を発行する必要があります。ADD TRANDATA
はChange Data Capture (CDC)を有効にし、指定された表に対する最小のChange Data Captureを作成します。
Oracle GoldenGateは、サプリメンタル・ロギングを有効にするために必要以上のCDC表を使用しません。
CDCの有効化の一環として、SQL Serverはデータベースごとに2つのジョブ(dbname
_capture
とdbname
_cleanup
)を作成します。dbname
_capture
ジョブは、2次切捨てポイントを調整して、ログからデータを取得し、CDC表に格納します。dbname
_cleanup
ジョブは、CDCによって取得されたデータをエージングして削除します。
Extractに対して MANAGESECONDARYTRUNCATIONPOINT
オプションまたはACTIVEMANAGESECONDARYTRUNCATIONPOINT
オプションを指定してTRANLOGOPTIONS
パラメータを使用すると、dbname
_capture
ジョブが削除され、CDC表をロードするジョブのオーバーヘッドが回避されます。
もう1つの方法(NOMANAGESECONDARYTRUNCATIONPOINT
を指定したTRANLOGOPTIONS
の使用)では、SQL Serverエージェントが稼働している必要があり、dbname
_capture
ジョブとdbname
_cleanup
ジョブが保持されている必要があります。記憶域の問題によりデフォルトの3日間を許容できない場合、dbname
_cleanup
のデータ保持期間の調整が必要な場合があります。
TRANLOGOPTIONS
の詳細は、4.5項「2次切捨てポイントの管理」を参照してください。
サプリメンタル・ロギングの有効化の手順:
この手順には、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるデータベース・ユーザーが必要です。
ソース・システムで、GGSCIを実行します。
次のコマンドを発行してデータベースにログインします。
DBLOGIN SOURCEDBDSN
[, {USERIDuser
, PASSWORDpassword
| USERIDALIASalias
}]
条件:
SOURCEDB
DSN
は、SQL Serverデータソースの名前です。
USERID
user
はExtractログインで、PASSWORD
password
は、ExtractでSQL Server認証を使用する場合に必要なパスワードです。または、資格証明が資格証明ストアに格納されている場合、USERIDALIAS
alias
は、資格証明の別名です。統合Windows認証を使用するDSNにDBLOGIN
を使用する場合、GGSCIセッションのデータベースへの接続は、GGSCIを実行しているユーザーによるものになります。ADD TRANDATA
またはDELETE TRANDATA
を発行するには、このユーザーは、SQL Server sysadmin
サーバー・ロールのメンバーである必要があります。
GGSCIで、Extract構成内にある個々の表に対して次のコマンドを発行します。ワイルドカードを使用して複数の表名を指定できます。
ADD TRANDATA owner.table
SQL Serverデータベース内の1つ以上の表に対してADD TRANDATA
コマンドを使用してサプリメンタル・ロギングを有効にすると、以降のログ・バックアップの後、ログ領域を必要に応じて解放するために移動される必要のあるトランザクション・ログに2次切捨てポイントが作成されます。TRANLOGOPTIONS
パラメータを使用して、2次切捨てポイントの管理方法を制御します。これは必須パラメータで、2次切捨てポイントを管理するために次のオプションを指定できます。
Extractが、(同じソース・データベースに対して)SQL Serverトランザクション・レプリケーション、またはOracle GoldenGate以外のアプリケーション用に構成されているCDC、あるいはその両方と平行して実行されない
場合は、MANAGESECONDARYTRUNCATIONPOINT
オプションを指定してTRANLOGOPTIONSを使用します。
注意: SQL Serverトランザクション・レプリケーションやOracle GoldenGate以外のアプリケーションに対するCDCが同時に実行されている場合、Extractに対してTRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT を使用すると、SQL Serverログ・リーダー・エージェントまたはCDC取得ジョブが失敗します。 |
MANAGESECONDARYTRUNCATIONPOINT
には、次のメリットがあります。
Extractが2次切捨てポイントを管理します。次のT-SQL文を発行すると、Extractは2次切捨てポイントを定義された期間進めます。
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
記憶域を節約するためにログは定期的に切り捨てられますが、Extractは切捨てポイントまでに処理されなかったデータをトランザクション・ログ・バックアップから取得できます。この機能に必要なログのバックアップには、ネイティブSQL Serverバックアップ・ユーティリティのみを使用します。このシナリオでは、サードパーティ・バックアップ・ソフトウェアは使用できません。
また、MANAGESECONDARYTRUNCATIONPOINT
によってCDC取得ジョブの定期的なチェックおよび削除も行われます。これにより、データベース内のすべての表について変更データの収集が回避されます。その結果は次のとおりです。
Extractによるパフォーマンスが向上します。
CDC表内の取得されたデータによって使用される記憶域が少なくなります。
トランザクション・ログのレコードが少なくなります。
Extractが2次切捨てポイントを管理し、ログ・バックアップ頻度よりも長い間停止した場合、ログ・バックアップ後、Extractはトランザクション・ログのデータを解放できません。このため、トランザクション・ログは大きくなり続けます。バックアップ後にログから領域が解放されるようにするには、データに'distributed'と明示的にマークする必要があります。このExtractグループを再度開始する前に、次の手順を実行して、まだ処理が必要なデータを含むログ・バックアップをすべて保持します。
Extractが必要とする最も古いログを示すログ読取りチェックポイントを決定するには、GGSCI
でSHOWCH
オプションを指定してINFO EXTRACT
コマンドを使用します。
INFO EXTRACT group
, SHOWCH
手動またはSQL Serverエージェント・ジョブ内から、ソース・データベースに対して次のT-SQLコマンドを発行し、2次切捨てポイントを移動します。Extractを起動するまで、ほぼ1分ごとにこのコマンドを実行します。
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
Extractを再起動する前に、SQL Serverエージェント・ジョブを停止して無効化するか、問合せセッションを切断します。
Extractが、(同じソース・データベースに対して)SQL Serverトランザクション・レプリケーション、またはOracle GoldenGate以外のアプリケーション用に構成されているCDC、あるいはその両方と平行して実行される場合は、NOMANAGESECONDARYTRUNCATIONPOINT
オプションを指定してTRANLOGOPTIONS
を使用します。SQL Serverが、2次切捨てポイントを管理します。
2次切捨てポイントとExtractとの同期を維持するには、ACTIVESECONDARYTRUNCATIONPOINT
オプションを指定してTRANLOGOPTIONS
を使用します。この方法のメリットは、Extractが未処理トランザクション・データを取得するためにログ・バックアップにアクセスする必要があるかどうかを気にせずに、サードパーティのトランザクションログ・バックアップ・ソフトウェアを使用できることです。
ACTIVESECONDARYTRUNCATIONPOINT
により、切捨てのマークが付けられたデータの取得をExtractが終了するまで、アクティブ・ログの切捨ては行われません。これまでにオンライン・データは欠落していないため、Extractがバックアップ・ログを読み取る必要はまったくありません。
ACTIVESECONDARYTRUNCATIONPOINT
を使用すると、Extractが大幅に遅れた場合、ログ・ファイルが大きくなる可能性があります。これは、トランザクション・ログ・バックアップが即座にログの切捨てを行わないためです。切捨ては、Extractがデータの取得を終了した後にのみ行われます。したがって、記憶域のパラメータを調整して、増加するログ・サイズに対応する必要があります。
このオプションを使用する場合は、ソース・データベースから取得できるExtractグループが1つのみである必要があります。複数のExtractグループの使用には、深刻なデータ損失が発生するリスクがあり、この状態を解決できる唯一の方法は、ターゲット・データの完全な再インスタンス化です。
これらの手順は、「システム要件とインストール前の 指示」に記載されているOracle GoldenGateの要件に従ってフル・データベース・バックアップを作成するためのものです。
データベースのフル・バックアップの手順:
要件に合せてOracle GoldenGateを構成し、初期同期を開始して変更レプリケーションを開始する準備ができたら、このプロシージャに戻ります。Oracle GoldenGateを構成する方法は、Oracle GoldenGate for Windows and UNIXの管理を参照してください。
SQL Server Management Studioを使用してSQL Serverインスタンスに接続します。
「Databases」フォルダを展開します。
ソース・データベース名を右クリックして、「All Tasks」、「Backup Database」の順に選択します。
「Database - Complete」を選択します。このオプションは、フル・データベース・バックアップを実行します。Oracle GoldenGateの起動時にトランザクション情報は一切失われません。
「Destination」の下の「Add」をクリックして、バックアップ・ファイルの名前と場所を指定します。
「OK」をクリックします。「SQL Server Backup」ダイアログ・ボックスの「Destination」リスト・ボックスに、バックアップ・ファイルが追加されます。
「OK」をクリックして、バックアップを開始します。