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

Oracle GoldenGate 同步含 LOB 表部分數據:關鍵參數 SQLPREDICATE 實戰

     編輯:DB2 教學

Oracle GoldenGate 同步含 LOB 表部分數據:SQLPREDICATE 關鍵參數實戰

OGG Loading data from file to Replicat 方式不支持 LOB、LONG、UDT 等 >4KB 大字段。若需同步含 LOB 表的部分記錄,必須在 Extract 進程配置 SQLPREDICATE 過濾條件。本文詳細說明適用場景、配置語法及替代方案對比。

1. 業務場景與約束

  • 源庫:Oracle 10gR2 (10.2.0.5),無 impdp remap_table 功能。
  • 目標:同庫同用戶下,將表 t1(含 LOB 字段)部分行同步到新表 t1_temp。
  • OGG 直接加載 (direct load) 不支持 LOB,只能用 file to Replicat:Extract 落地文件 → Replicat 讀取文件轉 SQL 執行。

2. 關鍵參數:TABLE ... SQLPREDICATE

在 Extract 參數文件中指定過濾條件:

TABLE test.t1_temp, SQLPREDICATE "where xh = '11'";

或使用子查詢動態獲取需同步的主鍵值:

TABLE test.t1_temp, SQLPREDICATE "where xh in (select xh from test.highgo_sync_row_xh)";
  • test.highgo_sync_row_xh 表預存待同步行的主鍵 xh。
  • Extract 讀取 Redo 生成 Trail 文件時,自動注入 WHERE 子句,僅抽取符合條件的行。

3. 完整 Extract 參數示例

EXTRACT ext_lob
USERID ggate, PASSWORD ggate
EXTTRAIL ./dirdat/lt
TABLE test.t1_temp, SQLPREDICATE "where xh in (select xh from test.highgo_sync_row_xh)";

4. 替代方案對比

方案優點缺點適用性
OGG file to Replicat + SQLPREDICATE原生支持、無需額外工具、支持 LOB落地文件佔磁盤、延遲較高✅ 本場景首選
OGG file to Database Utility調用 SQL*Loader/外部表、批量效率高配置複雜、需控制文件權限大批量同步
HVR (第三方同步工具)無落地文件、直接適用 Row 級過濾、延遲極低需購買授權、學習成本企業級高可用
PL/SQL 手動導出導入簡單可控非增量、難以自動化一次性小數據

5. 注意事項與最佳實踐

  1. 索引支持:SQLPREDICATE 中的過濾列(如 xh)建議建立索引,提升 Extract 掃描效率。
  2. 事務一致性:若源表有并發 DML,確保過濾條件覆蓋的行集合在提交時刻一致,避免邏輯不一致。
  3. 大對象處理:Replicat 端同樣會處理 LOB 寫入,確保目標表空間、LOB 存儲參數(ENABLE STORAGE IN ROW 等)配置得當。
  4. 監控告警:監控 Extract/Replicat 延遲、Trail 文件積壓,設置 LAGREPORT 定期上報。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved