現象
次のような状況を考えます。
-
Attunity によって Oracle には、Windows、Microsoft SQL Server 2016、変更データ キャプチャ 2014、または 2012 2017 の SQL Server を使用します。
-
Oracle データベース ・ テーブルからの変更をキャプチャするのには、CDC のインスタンスを作成します。
-
キャプチャの値を変更は、SQL Server の変更のキャプチャのデータベースに格納されます。
-
SQL Server データベースのトランザクション ・ ログが大きくなるし、トランザクション マーク付けされていない切り捨てのようにデータの変更が自動的にキャプチャされます。
このシナリオでは、SQL Server データベースのトランザクション ログ ファイルの拡張は蓄積され、時間の経過と共に大量のディスク領域を消費します。
原因
Oracle インスタンスのデータのキャプチャを変更するを構成したら、変更データを取得する SQL データベースがミラー化しましたテーブルでは、レプリケーション用にマークされたトランザクションがあります。この現象は、Oracle の CDC は、cdc シナリオの SQL Server に使用されるもののような基になるシステム ストアド プロシージャに依存するために発生します。ただしがないため CDC の SQL レプリケーション関係する Oracle の CDC を単独で使用する場合、レプリケーション用にマークされたトランザクションをオフにするには、ログ読み取りプロセスはありません。トランザクションは、SQL Server にレプリケートする必要はありません、ためには、この資料に記載されている回避策を使用して分散としてトランザクションを手動で設定しても安全です。
この正確な原因を確認するには、CDC の SQL Server データベースに接続しているときにDBCC OPENTRANコマンドを実行します。次の例のように、非分散型の LSN 値が表示されます。
レプリケートされたトランザクション情報:
最も古い分散 LSN: (0:0:0)
最も古い非分散 LSN: (38:272:1)
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に問い合わせてください。Oracle の CDC CDC を使用して SQL のストアド プロシージャ、および、さらに、レプリケーション ログ リーダーを使用しているために、非分散型の LSN が存在することがあります。この非分散型の LSN は、CDC の Attunity データベースのミラー化されたテーブルを追加するのにはログ エントリに対応します。
このクエリを実行する場合、 log_reuse_wait_descオプションは、原因を示すレプリケーションでは、値を返します。見つかりませんでした、場所、名前は、< your_cdc_database > log_reuse_wait_descの名前を選択します。
レプリケーション< your_cdc_database >
解決策
-
CDC が有効な SQL Server データベースに接続されているクエリ ウィンドウで次のコマンドを実行します。
exec sp_repltrans次のような出力が表示されます。
xdesid xact_seqno xact_seqno
0x000000260000012C0001 0x0000002A000001B50001次のコマンドの LSN のトランザクション シーケンス番号をコピーします。 -
BeginTran と CommitTran の LSN のペアが既にレプリケートしていることを通知するには、次のようにsp_repldoneコマンドを実行して、手順 1 から番号を使用します。
sp_repldone @xactid = 0x000000260000012C0001, @xact_segno = 0x0000002A000001B50001
-
CDC データベースにレプリケートされると、トランザクションがマークされていることを確認するのには次のコマンドを実行します。
DBCC OPENTRANこれには、次のような出力が返されます。
アクティブな開いているトランザクションがありません。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に問い合わせてください。 -
トランザクション ・ ログを再利用できることを確認するには、データベースに記載されているその他の再利用する理由がないことを確認します。
名前 log_reuse_wait_desc、見つかりませんでしたから名前を選択 = 'your_cdc_database'
これには、次のような出力が返されます。log_reuse_wait_desc 名
何もyour_cdc_database -
ここでログのバックアップを使用してトランザクション ログをトランケートするはずです。消費されるディスク領域を削減するのにはトランザクション ログ ファイルを圧縮する必要があります。
たとえば、次のように実行します。バックアップ ログの your_cdc_database に DISK='c:\folder\logbackup.trn'
DBCC SHRINKFILE (yourcdcdatabase_log、1024)
詳細については、トランザクション ・ ログ ・ ファイルのサイズの管理を参照してください。
詳細
詳細については、 Microsoft では、CDC のトラブルシューティングを行うインスタンス エラー Attunity での Oracle のデータ ・ キャプチャを変更するを参照してください。
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。