FlinkX-Oracle Logminer模塊是FlinkX基於Logminer對Oracle重作日誌進行實時採集分析,可對Oracle進行實時同步也能夠經過指定SCN或者時間戳從某個節點進行同步,同時經過記錄SCN號支持續跑功能。
sql
1、Logminer介紹與使用數據庫
Logminer是Oracle公司從產品8i之後提供的一個實際很是有用的分析工具,使用該工具能夠輕鬆得到Oracle重作日誌文件(歸檔日誌文件)中的具體內容,Logminer分析工具其實是由一組PL/SQL包和一些動態視圖組成,它做爲Oracle數據庫的一部分來發布,是Oracle公司提供的一個徹底免費的工具。ide
Logminer讀取重作日誌文件的內容並加載到視圖v$logmnr_contents中,可經過SQL對視圖v$logmnr_contents 讀取獲取到實時數據。工具
一、Oracle重作日誌性能
Oracle的重作日誌分爲在線重作日誌和歸檔重作日誌。日誌
Online Redo log files--在線重作日誌,又稱聯機重作日誌,指Oracle以SQL腳本的形式實時記錄數據庫的數據更新,換句話說,實時保存已執行的SQL腳本到在線日誌文件中(按特定的格式)。對象
Archive Redo log files--歸檔重作日誌,簡稱歸檔日誌,指當條件知足時,Oracle將在線重作日誌以文件形式保存到硬盤(持久化)。blog
二、補充日誌進程
補充日誌不是獨立的一種日誌,爲了性能考慮,在Update時,重作日誌默認只記錄更改字段的先後值,而開啓了補充日誌後,會將更新先後的全部字段的值記錄。同步
三、Oracle重作日誌寫入流程
Oracle重作日誌採用循環寫入的方式,每個Oracle實例至少擁有2組日誌組。
Oracle重作日誌通常由Oracle自動切換,重作日誌文件在當LGWR進程中止寫入並開始寫入下一個日誌組時發生切換,或在用戶收到發出ALTER SYSTEM SWITCH LOGFILE時發生切換。若是Oracle數據庫開啓了歸檔功能,則在日誌組發生切換的時候,上一個日誌組的日誌文件會被歸檔到歸檔目錄裏。
四、Logminer字典
Oracle數據字典記錄當前全部表的信息,字段的信息等等。Logminer使用字典將內部對象標識符和數據類型轉換爲對象名稱和外部數據格式。若是沒有字典,Logminer將返回內部對象ID,並將數據顯示爲二進制數。
對於下面的Insert語句
沒有設置字典顯示的內容爲:
Logminer提供了三種字典選項:
FlinkX使用的是Online Catalog
五、Logminer 使用步驟
第一步:爲Logminer增長日誌文件
第二步:開啓Logminer
第三步:讀取數據
查出的數據格式以下圖所示:
2、FlinkX和Logminer集成
一、Logminer模塊流程解析
Logminer模塊主要分爲三部分
查詢在線日誌與歸檔日誌
將日誌文件加載到Logminer中,Logminer會將日誌文件內容轉化到v$logmnr_contents視圖裏
根據過濾條件,查詢v$logmnr_contents數據,得到數據,並對sql_redo字段內容進行解析
二、日誌文件的查找
Logminer經過加載重作日誌文件,將其中的內容根據字典轉化到v$logmnr_contents中,所以第一步爲Logminer找到須要加載的重作日誌文件
Oracle 重作日誌文件分爲在線重作日誌和歸檔重作日誌,其中在線重作日誌能夠在v$log以及v$logfile中查詢到,而歸檔重作日誌能夠在v$archived_log查找到,通常是經過scn號進行查詢過濾。
三、日誌文件的加載與開啓
將日誌文件加載到Logminer中,並開啓Logminer
Logminer第一次添加日誌
SYS.DBMS_LOGMNR.add_logfile(l_log_rec.name, SYS.DBMS_LOGMNR.new)
Logminer後續添加日誌
SYS.DBMS_LOGMNR.add_logfile(l_log_rec.name)
開啓Logminer
四、查找數據
Logminer會將加載的日誌文件內容輸出到視圖v$logmnr_contents裏,只須要按照必定的過濾條件查找到本身想要監聽的數據便可。目前僅支持表名以及對應的動做(update/delete/insert)進行過濾。
3、Logminer實戰示例
Logminer->hive腳本