工作原理
准實時抽取架構圖:
以上共有核心業務系統數據庫服務器、ETL服務器、BI數據庫服務器〔目標數據庫服務器〕,三台服務器和ETL客戶端(PowerCenter客戶端)。其中核心業務系統上有核心系統產生的Redo Log、安裝Oracle Logminer、安裝PowerExchange,ETL服務器上安裝PowerCenter及PowerExhchange的客戶端、BI數據庫服務器為目標數據庫、ETL客戶端安裝(PowerCenter客戶端)。
核心業務系統數據庫服務器在進行業務過程中,會一直寫Redo Log;Logminer為Oracle日志分析工具,能夠對Redo Log及Achive Log進行解析;PowerExhchange為Oracle Logminer和ETL工具PowerCenter的接口,實現對Logminer的封裝,通過他來定義要獲取哪些表的增量及增量數據放到哪張對應的增量表中〔增量表結構是自己定義〕。
ETL客戶端主要用來定義數據的抽取、轉換、加載規則,比如:定義要抽取哪些表的增量、抽取的頻率、要將增量數據插入到那個數據庫〔可以是任何數據庫服務器上的表〕。在獲取增量后如何處理這些增量(轉換)等。
ETL服務器執行客戶端定義好的ETL規則。在執行過程中,通過PowerExchange接口實時抽取核心業務系統產生的增量,並根據規則轉換處理或不進行轉換插入到BI數據庫服務器上相應的目標表中。
具體執行流程是,PowerExchange和Logminer以類似服務的形式,在核心業務系統上執行,當ETL服務器啟動抽取時,通過PowerExhchange接口調用在核心業務系統上的PowerExchange,PowerExhchange再調用Logminer,Logminer對核心業務系統產生的Redo Log進行解析。解析完成后將數據返回給PowerExhchange,PowerExhchange將數據返回給ETL服務器,ETL服務器根據ETL客戶端指定的規則(經過加工處理或不經過加工處理)處理后將增量數據加工到BI數據庫服務器相關的表中。
詳細介紹
在Oracle服務器端的詳細操作如下:
1、 執行以下腳本
說明:如果數據庫已經是歸檔模式則不需要創建和指定歸檔日志存放路徑。
必須創建針對PowerExchange使用的Oracle用戶並賦予指定權限,主要是為了對Logminer解析出數據后,存放數據的視圖進行操作。
設置Oracle Supplemental Logging,默認情況下。Oracle記錄日志,是沒有數據表中的字段數據內容,設置Supplemental Logging完成或。Redo log會記錄發生變化的每條記錄的前像內容和后像內容。只有這樣,才能獲取到變化記錄內容。
創建Logminer 表空間,Logminer在進行數據解析后。會將解析的結果數據保存到,幾個視圖中。也就是說需要將數據暫存到數據表空間中。
編譯Logminer系統包。
將Oracle Catalog復制到redo logs
Logminer根據對數據字典的使用分為三種模式〔數據字典是將redo log中的對象代碼轉換成具體表名等對象名的映射文件〕,user online Catalog、Extracting a LogMiner Dictionary to the Redo Log Files、Extracting the LogMiner Dictionary to a Flat File。
PowerExchange在調用Logminer時,使用Extracting the LogMiner Dictionary to a Flat File這種模式。這種模式不需生成數據字典文件,即將數據字典內容寫入到redo log中,因此沒有額外的對數據庫的操作。
2、 在Oracle服務器端安裝PowerExchange
PowerExchange主要是實現對Oracle Logminer進行封裝的工具,Logminer實現了對數據庫日志的解析,但是要達到實時獲取增量數據的目的需要涉及以下方面的問題
(1) 如何實時進行解析
Oracle Logminer進行日志解析,需要調用Logminer的命令。每次命令可以解析整個redo log內容,也可以按照時間進行解析。但是,需要手工執行命令。PowerExchange利用自身的觸發機制,對logminer進行自動的調用,實現准實時增量數據的獲取
(2) 解析出的內容的處理
Logminer在解析出變化數據后,會存放到相關視圖中。視圖存放所有變化數據表的數據,在應用時,必須對視圖進行查詢,然后將數據轉移到相關的數據表中。操作麻煩,需要變成處理。Logminer提供圖形化操作頁面,通過Navigator進行對解析數據的定義及處理。
(3) 穩定性及效率問題及和ETL工具的結合
直接調用Logminer會涉及到頻率、穩定、效率等諸多考慮因素,PowerExchange做為產品這些問題都有具體的處理。同時PowerExchange做為Informatica的一個組建,非常方便的整合到ETL調度體系中。
PowerExchange在oracle服務器端,做為一個服務貯存,監控數據的產生。通過ETL工具將實時抽取配置成一個Informatica Powercenter的WorkFlow。PowerExchange獲取到數據后,自動運行此WorkFlow將獲取到的數據抽取到定義好的目標表中。