2025年4月15日 星期二

IBM Data Replication (CDC) 資料同步抄寫實作系列《環境建置篇》  Part 1:來源端環境建置(圖文說明)

IBM Data Replication 是一套運用 Change Data Capture(CDC)技術,實現異質資料庫系統即時資料同步與抄寫的資料整合解決方案。作為傳統 ETL 批次式資料整合的補充技術,該方案能即時從來源資料庫的交易日誌中擷取資料異動,並將變更內容傳送至目標資料庫,或是各類第三方中介平台與工具。相較於需要設計批次作業(Batch Job)的 ETL 工具,IBM Data Replication(以下簡稱 IDR)是一種基於配置設定(Config-based)的工具軟體。使用者僅需透過滑鼠操作完成設定與配置,再視需求撰寫少量客製化的衍生表達式(Derived Expressions),即可快速滿足異質資料庫之間的即時資料同步抄寫需求。

本系列文章將帶您逐步了解資料同步與抄寫的實作流程。首先《環境建置篇》將聚焦於整體實作環境所需的軟體安裝與設定,共分為來源端(Part 1)目的端(Part 2)中控端(Part 3)等三篇文章。其次在《實作演練篇》則會詳細說明 IDR 如何因應各種常見使用場景的操作流程,共分為標準與稽核模式同步抄寫(Part 1)自訂客製化稽核欄位(Part 2)同步抄寫作業的停止與重新啟動(Part 3)以及同步抄寫作業監控與效能瓶頸分析(Part 4)等四篇文章,這些豐富地內容將可協助您快速掌握實務操作的技巧。




IDR CDC 資料同步抄寫實作環境配置

本系列文章將以 Oracle Database 資料同步抄寫至 Microsoft SQL Server 做為案例場景,實作環境配置三個 Windwos Server 作業系統主機,分別建置來源端 Oracle Database、目的端 Microsoft SQL Server、以及 IDR CDC Server 中控端所需之軟體。整體配置如下圖所示:


IDR CDC 資料同步抄寫實作《環境建置篇》Part 1:來源端環境建置





1. Oracle Database 軟體安裝

來源端主機安裝 Oracle Database 11g Express Edition 以及 Oracle SQL Developer V23.1.1 軟體,前者需要依據安裝程序進行軟體安裝,後者為 ZIP 格式檔案,解壓縮後即可使用,可將其資料夾更名並移動到 C:\ 目錄中。欲安裝 Oracle Database 11g Express 軟體,請以系統管理員身分執行 setup.exe,並依據下圖所示進入到下一個程序。


勾選 Oracle Database 11g Express Edition,並使用預設安裝資料夾(C:\oraclexe\),指定系統管理員 SYS 帳號之密碼,例如:!QAZ2wsx


確認預設的安裝配置設定,點擊「Install」按鈕就可以開始安裝軟體。安裝完成後,請點擊「Finish」按鈕關閉安裝程式。


Oracle 資料庫安裝完成後,我們可以使用 Oracle SQL Developer 進行連線測試並完成後續的配置設定。請切換至 SQL Developer 資料夾,點擊 sqldeveloper.exe 啟動程式。


進入 SQL Developer 視窗後,在「連線」區塊的「Oracle 連線」項目上點擊滑鼠右鍵,點擊「新建連線」。


使用以下配置建立與 Oracle 資料庫的連線:
  • 連線名稱ORCL_SYS
  • 使用者名稱sys,角色指定 SYSDBA
  • 密碼:輸入之前配置的 !QAZ2wsx
  • 主機名稱localhost
  • 連接埠1521
  • 連線方式:點選 SID,名稱輸入 xe


若成功連線至 Oracle 資料庫,應該可以看到如下圖所示的畫面。




2. Oracle Database 來源資料庫建置與設定

安裝來源端資料抄寫引擎(IDR CDC Replication Engine for Oracle)之前,我們還需要依據相關需求完成必要的前置事項(詳細資訊請參閱:官方文件)。在我們的 Oracle 來源端環境中,需要完成「啟用補充記載(Enabling supplemental logging)」、「將資料庫實例設為 ARCHIVELOG 模式(Setting the database instance to ARCHIVELOG mode)」、「啟動 Oracle 接聽器(Starting the Oracle listener)」以及「設定遠端連線(Setting up a remote connection)」等四項前置工作。請注意:若需將 IDR CDC Replication Engine 部署在您的來源端資料庫系統,建議請先詳細閱讀官方文件中的說明。

首先,我們使用 SQL Developer 檢視 Oracle 資料庫的 LOG 模式。
  • 使用 SELECT LOG_MODE FROM V$DATABASE; 指令:我們可以知道 Oracle 資料庫預設並未啟動 Archive Log,因此需要手動開啟。
  • 使用 SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; 指令:我們可以知道 Oracle 資料庫預設並未啟動 Supplemental Log,因此需要手動開啟。


我們可以使用 Oracle 資料庫的 SQL Commend Line 工具(SQL*PLUS)來開啟 Archive Log 模式。指令參考如下:
  1. 使用 sysdba 角色連線至 Oracle:connect /as sysdba
  2. 停止資料庫:Shutdown
  3. 啟動資料庫執行管理任務:Startup mount
  4. 開啟 Archive Log 模式:Alter database archivelog;
  5. 套用配置啟動資料庫:Alter database open;
  6. 檢視 Archive Log 配置:archive log list;


回到 SQL Developer,確認 Archive Log 模式已啟用。
  • 使用 archive log list; 指令:我們可以知道 Oracle 資料庫日誌模式已變更為「存檔日誌模式(Archive Log)」。
  • 使用 show parameter db_recovery_file_dest; 指令:還可以進一步知道 Oracle 資料庫將 Archive Log 儲存在哪裡。


繼續在 SQL Developer 中使用以下二個指令開啟 Oracle 資料庫的 Supplemental Log 模式。
  • ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  • ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;


再次確認 Oracle 資料庫的 LOG 模式。應該可以觀察到 Archive Log 以及 Supplemental Log 均已開啟。


接下來,我們需要在 Oracle 資料庫中新增一個使用者。請在「連線」區塊的「其他使用者」項目上點擊滑鼠右鍵,點擊「建立使用者」。
  • 使用者名稱CREDIT_USER
  • 使用者密碼:例如 !QAZ2wsx
  • 預設表格空間(Default Table Space)USERS
  • 暫時表格空間(Temp Table Space)Temp


使用者新增完成後,我們需要為該使用者配置適當的權限。推薦的做法是,直接使用 IDR CDC Engine 軟體安裝路徑中 samples 資料夾內的範本檔案。在本案例中,我們直接使用 createuser-ora-nodba.sql 範本進行使用者權限配置。


從下圖可以觀察到,使用 createuser-ora-nodba.sql 範本,CREDIT_USER 僅會被授予「CONNECT」、「RESOURCE」以及「SELECT_CATALOG_ROLE」等三個角色。


接下來,我們需要使用 CREDIT_USER 建立來源端資料表。首先請使用以下配置建立 Oracle 資料庫連線:
  • 連線名稱CREDIT_USER
  • 使用者名稱CREDIT_USER,角色指定 預設
  • 密碼:輸入之前配置的 !QAZ2wsx
  • 主機名稱localhost
  • 連接埠1521
  • 連線方式:點選 SID,名稱輸入 xe


接著使用「匯入資料」功能,透過匯入預先準備好的 CSV 檔案建立資料表。


選取並匯入本機檔案 credit_application.csv,其餘配置均使用預設參數即可。點擊「下一步」按鈕。


自行指定指定資料表名稱,例如:CREDIT_APP點擊「下一步」按鈕。


「選擇資料欄」步驟中,可以觀察到這個 CSV 檔案共包含 SK_ID_CURRNAME_CONTRACT_TYPEAMT_INCOME_TOTALAMT_ANNUITY 以及 NAME_INCOME_TYPE 等五個欄位。請將這五個欄位都放置到「選取的資料欄」中,點擊「下一步」按鈕。


在資料欄定義頁面中,參考以下配置完成這五個欄位的資料類型定義。
  • SK_ID_CURR:資料類型 = INTEGER;可為空值? = (不勾選)。
  • NAME_CONTRACT_TYPE:資料類型 = VARCHAR2;大小/數字位數 = 20;可為空值? = (勾選)。
  • AMT_INCOME_TOTAL:資料類型 = NUMBER;大小/數字位數 = 20;小數位數 = 3;可為空值? = (勾選)。
  • AMT_ANNUITY:資料類型 = NUMBER;大小/數字位數 = 20;小數位數 = 3;可為空值? = (勾選)。
  • NAME_INCOME_TYPE:資料類型 = VARCHAR2;大小/數字位數 = 50;可為空值? = (勾選)。

資料匯入完成後,可以先檢視 CREDIT_APP 資料表內容。


由於我們後續需要觀察資料同步抄寫的作業時間,因此需要在 CREDIT_APP 資料表中新增一個 TIMESTAMP 欄位。請先使用 TRUNCATE TABLE CREDIT_APP; 指令清空資料表內容。


使用 ALTER TABLE 指令在 CREDIT_APP 資料表中新增一個名為「LAST_UPDATED」的 TIMESTAMP 欄位,並且指定預設值為 CURRENT_TIMESTAMP。完整指令為:ALTER TABLE CREDIT_APP ADD LAST_UPDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP;


為了讓整個資料同步抄寫流程可以更加方便,我們需要準備一個存放原始資料的 CREDIT_APP_TEMP 資料表(credit_application.csv 檔案內容),後續即可透過 SQL 指令將資料從 CREDIT_APP_TEMP 資料表逐筆寫入至 CREDIT_APP 資料表。請再次使用「匯入資料」方式建立資料表 CREDIT_APP_TEMP


使用以下 SQL 指令將資料從 CREDIT_APP_TEMP 資料表逐筆寫入至 CREDIT_APP 資料表。
  • INSERT INTO CREDIT_APP (SK_ID_CURR, NAME_CONTRACT_TYPE, AMT_INCOME_TOTAL, AMT_ANNUITY, NAME_INCOME_TYPE, LAST_UPDATED) SELECT A.SK_ID_CURR, A.NAME_CONTRACT_TYPE, A.AMT_INCOME_TOTAL, A.AMT_ANNUITY, A.NAME_INCOME_TYPE, SYSTIMESTAMP FROM CREDIT_APP_TEMP A WHERE SK_ID_CURR >= 100000 AND SK_ID_CURR < 102000;
  • SELECT COUNT(*) FROM CREDIT_APP;
  • COMMIT;


確認 CREDIT_APP 資料表資料已新增完成,初始化資料共計 100 筆。





3. IDR CDC Engine for Oracle 軟體安裝及設定

來源端主機上的 Oracle 資料庫安裝與初始化配置完成後,接著我們就可以安裝 IDR CDC Engine for Oracle 軟體(版本為 V11.4.0.5)。請以系統管理員身分執行安裝程式:setup-iidr-11.4.0.5-5703-x86.exe,選擇安裝新產品。


安裝程式啟動後,首先在資料儲存庫類型選擇:Oracle。供應項目(軟體授權類型)選擇:IBM InfoSphere Data Replication


直接使用預設安裝路徑:C:\Program Files\IBM\InfoSphere Data Replication\Replication Engine for Oracle,並且選擇接受軟體授權合約。


選擇在桌面上建立軟體捷徑,再來直接使用預設的抄寫引擎實例和產品日誌路徑:C:\ProgramData\IBM\InfoSphere Data Replication\Replication Engine for Oracle


確認所有的參數配置項目都正確後,即可開始安裝軟體。安裝完成後,請點擊「完成」按鈕關閉安裝程式。


IDR CDC Engine for Oracle 軟體安裝完成後,接著我們可以開始完成 IDR CDC Engine 與 Oracle 資料庫之間的連接與配置。請點擊桌面圖示,啟動軟體。


開啟 IDR 配置工具後,先回到配置工具主視窗。點擊「Encryption Profiles」區段的 「Manage」按鈕,建立共用的 TLS 加密配置(請注意:本實作環境並不會進行 TLS 加密配置)。


建立一個名為 Disable_Encryption 的配置,Engine-to-Engine 之間的網路通訊不使用 TLS 加密(Encryption 選擇:Disabled)。


回到配置工具主視窗,點擊「Instances」區段的 「新增」按鈕,新增一個 CDC Replication Engine Instance for Oracle。


請依據以下內容配置 CDC Replication Engine Instance for Oracle 的相關設定。
  • 實例:
    • 名稱:CREDIT_USER_SOURCE
    • 伺服器埠:10501
    • 暫存磁碟配額:10 (GB)
    • 容許記憶體上限:1024 (MB)
    • Encryption Profile:Disable_Encryption
  • Windows 服務:
    • 此選項係將 CDC Replication Engine Instance 配置為 Windows 作業系統的服務,請將「登入身分」選擇為:這個帳戶,並輸入 Windows 作業系統管理者帳號及密碼(需加入網域或主機名稱)。
  • 資料庫:
    • ORACLE_HOME:自動從環境變數中取得。
    • TNSNAMES.ORA 位置:%ORACLE_HOME%\network\ADMIN
    • TNS 名稱:XE
    • 使用者名稱:CREDIT_USER
    • 使用者密碼:!QAZ2wsx
  • 配置模式:選擇「本端日誌讀取」。


抄寫引擎實例(CDC Replication Engine Instance)會進行一系列的連線測試與配置驗證,完成後就會將這個實例作為 Windows 服務常駐於作業系統中。作業完成後,點擊「是」即可啟動這個 CREDIT_USER_SOURCE 實例的服務。


CREDIT_USER_SOURCE 實例建置完成後,在 IDR 配置工具主視窗中可以看到這個實例的基本配置以及運行狀態。


到目前為止,我們已完成來源端環境的建置,包含 Oracle 資料庫系統安裝和相關前置配置作業以及 IDR CDC Engine for Oracle 軟體安裝及設定。若我們檢視 CREDIT USER 資料庫,可以觀察到 IDR CDC Engine 會在該資料庫中建立四個系統資料表(TS_ 開頭)。這四個資料表也就是我們之前文章提到的抄寫引擎實例所擁有並管理的組態資料表(Metadata),用於記錄資料庫連線、資料表對應(mappings)、抄寫訂閱工作(subscriptions)以及事件通知(notifications)等相關設定。


最後,請在 Windows 作業系統的防火牆中新增 TCP 10501 連入規則。這個連接埠主要係讓中控端主機的 IDR CDC 存取伺服器(Access Server)可以與來源端主機的 IDR CDC Engine 進行溝通。






版權聲明
文章內容未經授權,請勿進行任何形式的複製、修改或發佈本文內容,如需轉載或引用,請在使用時注明出處並取得授權。本文中提及的特定公司、產品、品牌名稱等僅為描述目的,其版權歸屬於相應的公司或擁有者。

沒有留言:

張貼留言