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

SQL Server 異質複寫:將 Oracle 設定為發行集伺服器完整步驟

     編輯:Oracle 資料庫基礎

SQL Server 異質複寫允許將 Oracle 資料庫作為**發行集伺服器**,資料變更經由 SQL Server **散發伺服器** 轉發至訂閱端。本文詳細說明前置需求、Oracle 客戶端配置、散發伺服器啟用、Oracle 發行集建立、發行項選擇與常見連線問題排查。

架構總覽

Oracle (Publisher) 
   │  Log Reader Agent (在散發伺服器端運行)
   ▼
SQL Server Distributor (散發資料庫)
   │  Distribution Agent / Merge Agent
   ▼
SQL Server Subscriber (訂閱端)

關鍵點: Oracle 發行集**必須使用遠端散發伺服器**,不能在本機;一個散發伺服器可服務多個 Oracle 發行集。

前置需求清單

項目要求
SQL Server 版本Enterprise / Standard / Developer (Express 不支援異質複寫)
Oracle 版本10g R2 / 11g / 12c / 19c / 21c (需支援補充日誌)
Oracle 客戶端散發伺服器機器需安裝 Oracle Client 11g+ (含 OLE DB Provider for Oracle / ODBC)
TNS 連線散發伺服器能 tnsping ORCL 並 sqlplus user/pwd@ORCL 成功
Oracle 補充日誌ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; (必要,否則無法捕捉 PK 更新前值)
Oracle 用戶權限需 CREATE SESSION, SELECT ANY TABLE, EXECUTE ANY PROCEDURE, SELECT ON V_$LOG 等

步驟 1:配置散發伺服器

在 SSMS (SQL Server Management Studio) → 右鍵「複寫」→「配置散發」→ 選擇本機作為散發伺服器 → 指定散發資料庫與快照資料夾 → 完成嚮導。

步驟 2:建立 Oracle 發行集

  1. SSMS → 「複寫」→ 右鍵「新增 Oracle 發行集」
  2. 輸入 Oracle TNS 服務名(如 ORCL)、登入帳密
  3. **選擇發布類型**:
    • 完整:支援快照式 + 交易式複寫,功能完整
    • Oracle Gateway:優化跨系統閘道場景效能,功能受限,**建立後不可切換**
    建議預設選「完整」。
  4. 完成後,系統自動建立同名**連結伺服器**(僅供複寫內部使用),不可刪除。

步驟 3:建立發行項

  • 右鍵發行集 → 「新增發行項」
  • 勾選需複寫的表/視圖,**必須有主鍵**(交易式複寫要求)
  • 可設定欄位篩選、列篩選(WHERE 條件)
  • 注意:Oracle LONG/RAW/LONG RAW、BFILE、嵌套表等型別**不支援**複寫。

步驟 4:建立訂閱

  • 右鍵發行集 → 「新增訂閱」
  • 選擇訂閱者 SQL Server、訂閱資料庫
  • 代理程式排程:連續執行 / 定時 / 手動
  • 初始化:立即建立快照 / 首次同步時

常見問題排查

現象原因與對策
Log Reader Agent 啟動失敗Oracle Client 版本不符 / TNS 名稱錯誤 / 補充日誌未開啟 / 權限不足
ORA-12541: TNS:no listener散發伺服器防火牆阻擋 1521 / Oracle 監聽器未啟動 / TNSNAMES.ORA IP 錯誤
「無法找到主鍵」Oracle 表無 PK,需先 ALTER TABLE ADD CONSTRAINT PK PRIMARY KEY(col)
複寫延遲大網路頻寬 / 批次大小 / 索引缺失 / 散發資料庫磁碟 IO 瓶頸
DDL 變更未複寫異質複寫**不支援 DDL 複寫**,需手動同步結構變更

監控與維運指標

  • SSMS → 「複寫監視器」:查看代理程式狀態、未複寫交易數、延遲時間
  • sp_replmonitorhelpsubscription 程序查詢詳細狀態
  • 定期檢查散發資料庫大小、清理歷史記錄 (sp_MScleanupdistributiondb)
  • Oracle 端監控 V$ARCHIVE_DEST_STATUS、V$SUPPLEMENTAL_LOG

命名限制

Oracle 發行集名稱 **不可與散發伺服器同名**,也不可與使用同一散發伺服器的任何 SQL Server 發行集同名。

掌握此流程,即可建立穩健的 Oracle → SQL Server 異質複寫鏈路,滿足異構系統資料同步、報表卸載、緩存刷新等企業級整合需求。

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