Oracle CDC 實例是由 Oracle CDC 服務所建立的程式,用來處理從單一 Oracle 源資料庫擷取的變更。 Oracle CDC 實例會從 cdc.xdbcdc_config 數據表擷取其組態,並在 cdc.xdbcdc_state 數據表中維護其狀態。 這些數據表是 CDC 資料庫的一部分,可定義 Oracle CDC 實例。 如需 xdbcdc 資料庫和數據表的詳細資訊,請參閱 CDC 資料庫。
下列描述 Oracle CDC 實例所執行的工作:
處理服務啟動驗證:啟動時,CDC 實例會從 xdbcdc_config 數據表載入其組態,並執行一系列狀態驗證,以確保 CDC 實例保存狀態一致,而且可以開始處理變更。
準備變更擷取:當驗證成功通過時,Oracle CDC 實例會掃描目前定義的所有擷取實例,並準備 Oracle LogMiner 查詢和其他變更擷取所需的支持結構。 此外,Oracle 實例會重新載入上次執行 Oracle CDC 實例時儲存的內部擷取狀態。
從 Oracle 捕捉變更:Oracle CDC 實例通過 Oracle LogMiner 功能收集 Oracle 的變更,根據交易提交的順序進行排序,然後將變更寫入 CDC 資料庫中的 SQL Server 變更表。
處理服務關機:Oracle CDC 實例的生命週期是由 Oracle CDC 服務所管理。 當 Oracle CDC 實體要求關閉時,它會執行下列工作:
停止從 Oracle 事務歷史記錄讀取。
停止將已完成的 Oracle 交易寫入 CDC 資料庫。
等候最多 30 秒(如有必要),直到目前的交易完成寫入 CDC 資料庫為止。 如果超過 30 秒,則會取消寫入並回復交易(在重新啟動 CDC 執行個體時重試)。
在不同的線程中,將盡可能多的記憶體快取記錄寫入分段交易表,為止達 30 秒(從最舊的交易到最新),然後更新 xdbcdc_state 數據表,並提交所有變更。
處理組態變更:Oracle CDC 實例會收到來自 CDC 服務的設定變更通知,或者偵測到 cdc.xdbcdc_config 數據表中的新版本。 大部分的變更不需要重新啟動 Oracle CDC 實例(例如,新增或移除擷取實例)。 不過,某些變更,例如變更 Oracle 連接字串或存取認證,需要重新啟動 CDC 實例。
處理復原:當 Oracle CDC 實例啟動其內部狀態時,會從 xdbcdc_state 和 xdbcdc_staged_transactions 數據表還原。 還原狀態之後,CDC 實例會如往常般繼續。