首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

解決 GoldenGate for SQL Server 導致交易記錄暴增問題

     編輯:關於SqlServer

問題現象

在 SQL Server 2008 R2 環境啟用 Oracle GoldenGate (GG) 後,發現資料庫交易記錄檔持續增長,甚至佔滿磁碟空間,影響資料庫正常運作。

排查步驟與解決方案

階段 1:基礎配置檢查

  1. 檢查 GG 錯誤日誌:查看 ggerror.log 是否有報錯資訊
  2. 確認記錄備份模式:確保使用 LOG BACKUP 且未啟用壓縮
  3. 資料庫復原模式:需設為 FULL 或 BULK_LOGGED 模式

階段 2:CDC 與 Trandata 設定

-- 啟用擴展記錄
ADD TRANDATA dbo.tbl01

-- 重要:啟用後必須停用 Agent 中對應的 CDC Capture Job
-- 否則會造成記錄無法截斷

階段 3:Extract 參數調整

在 Extract 參數檔中加入:

TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT

此參數讓 GG 管理次要截斷點,確保記錄可被正常清理。

階段 4:完全重置方案(終極解法)

若上述配置皆正確但記錄仍暴增,需重新配置 GG 環境:

  1. 確認 GG 已讀取完當前記錄(關鍵前提)
  2. 刪除 Trandata:
    DELETE TRANDATA dbo.tbl01
  3. 刪除 Extract 與 Pump:
    DELETE EXTRACT extrate
    DELETE EXTTRAIL S:\gg\dirdat\rt
    DELETE EXTRACT pumprate
    DELETE RMTTRAIL s:\gg\dirdat\rt
  4. 檢查複寫狀態:
    DBCC OPENTRAN
    GO
    EXECUTE sp_repltrans
    GO
  5. 重置未分發記錄(關鍵步驟):
    EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, 
        @numtrans = 0, @time = 0, @reset = 1
    GO

    ⚠ 若不執行此步驟,重新配置後記錄仍可能暴增

  6. 停用資料庫 CDC:
    USE test
    GO
    EXEC sys.sp_cdc_disable_db
    GO
  7. 重新建立 Trandata、Extract、Pump

核心原理

GoldenGate 透過 sp_repldone 重置複寫標記,配合 MANAGESECONDARYTRUNCATIONPOINT 讓記錄截斷點正常推進,避免 VLF (Virtual Log Files) 無法釋放導致記錄檔持續增長。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved