天天操天天射综合,午夜精品999,国产黄a一级,亚洲成aⅴ人在线观看,外国免费毛片,蜜桃精品视频在线,亚洲第一中文字幕在线

一種關系數(shù)據(jù)庫前映像的附加日志解析模型研究

2018-03-21 14:29:13 電力信息與通信技術  點擊量: 評論 (0)
0 引言十三五期間國家電網公司制定了一系統(tǒng)、一平臺、多應用、微服務的信息化規(guī)劃,公司數(shù)據(jù)統(tǒng)一訪問共享、流通是公司信息化工作的重點[1-2

0 引言

“十三五”期間國家電網公司制定了“一系統(tǒng)、一平臺、多應用、微服務”的信息化規(guī)劃,公司數(shù)據(jù)統(tǒng)一訪問共享、流通是公司信息化工作的重點[1-2]。當前公司各類數(shù)據(jù)在抽取交互過程中,使用了較多的Goldengate產品[3-4],由于數(shù)據(jù)庫抽取產品直接讀取生產系統(tǒng)數(shù)據(jù),產品無法自主可控,存在嚴重的信息安全隱患[5-7],如何解決數(shù)據(jù)抽取過程中變化數(shù)據(jù)的定位,是當前面臨的一個難點。當前工具應用最廣泛的是基于邏輯級的數(shù)據(jù)庫抽取技術[8-10],由于數(shù)據(jù)庫抽取技術一直是國外數(shù)據(jù)庫廠商的核心技術,國內廠商尚未完全掌握技術實現(xiàn)細節(jié),在此類技術上國外技術封鎖重重,鮮有技術細節(jié)披露[11-12]。針對上述問題,更加說明數(shù)據(jù)庫抽取技術值得深入研究探討。

 1 Oracle數(shù)據(jù)庫前映像Undo數(shù)據(jù)解析原理

1.1 Undo日志文件解析流程

Oracle數(shù)據(jù)庫Undo日志中詳細記錄了數(shù)據(jù)庫操作的所有變化前的備份信息[13-14],Undo日志記錄所有的前印象,用于回滾操作,Undo日志有嚴格的格式與內部規(guī)律,但由于Oracle數(shù)據(jù)庫廠商的技術壁壘,無法直接獲取相關資料[15],在Undo日志分析方法上,采用硬解析方式。即先模擬一次數(shù)據(jù)庫操作,找到對應操作的trace文件,再用數(shù)據(jù)庫塊瀏覽編輯器(Block Browser and Editor,BBED)等塊讀取工具讀取對應的數(shù)據(jù)塊[16],通過trace文件注釋與二進制數(shù)據(jù)塊結合進行解析,找出其中的格式與規(guī)律流程。Undo日志解析方法如圖1所示。

1.2 追蹤文件解析

追蹤文件(Trace file)是以trc為后綴的文本文件,記錄了各種SQL操作及所消耗的時間等。根據(jù)追蹤文件可以查詢到詳細的數(shù)據(jù)庫操作過程,包括SEQ、SCN、KDO、OPCode等詳細的事務過程信息。具體追蹤文件內容如圖2所示。

圖1 Undo日志解析方法Fig.1 Undo log parsing method

圖2 Trace文件結構Fig.2 Trace file structure

通過追蹤文件中的內容,可以依次推理出數(shù)據(jù)庫每一種操作碼對應的標記位以及對應的執(zhí)行過程內容,為下一步抽取有效操作內容奠定基礎。

1.3 Undo 數(shù)據(jù)塊文件解析

利用Oracle內部工具數(shù)據(jù)庫塊瀏覽編輯器(BBED)可以直接查看和修改日志數(shù)據(jù)塊文件。通過BBED工具DUMP日志文件塊查看Oracle內部Undo日志塊內容,如圖3所示。

圖3 Undo數(shù)據(jù)塊文件結構Fig.3 Undo data block file structure

1.4 Undo 日志文件結構

通過分析追蹤文件,將追蹤文件內容與Undo數(shù)據(jù)塊與十六進制數(shù)據(jù)塊相匹配,分析解讀Undo日志格式,經過多次比對,推斷出Redo日志文件結構。

Redo日志由操作系統(tǒng)頭(OS Head Block)、Undo頭標記段(Undo Head Block)與Undo數(shù)據(jù)塊(Undo Data Block)3種類型數(shù)據(jù)塊組成。其中操作系統(tǒng)頭位于第一個塊,Undo頭標記段位于第二個塊,從第三塊開始為Undo數(shù)據(jù)塊。Undo日志文件結構如圖4所示。

圖4 Undo 日志文件結構Fig.4 Undo log file structure

日志文件通常使用操作系統(tǒng)的塊大小,一般為512 B,Redo Logs循環(huán)寫。日志格式依賴于操作系統(tǒng)與數(shù)據(jù)庫版本,一般是由日志文件頭(Redo Logs Header)以及后面的日志記錄(Redo Record)組成,日志記錄同樣由記錄頭(Record Header)以及多個日志操作(Redo Change)組成;數(shù)據(jù)庫的許多變化都放在記錄(Record)中,記錄可以大于一個塊,也可以小于一個塊,記錄的大小和數(shù)據(jù)庫的塊大小有關,默認情況下最大的記錄是3個數(shù)據(jù)塊。記錄是Redo日志中表示數(shù)據(jù)庫操作的一個原子單位,每個Redo記錄包含每個Change所需的Undo信息。

 2 前映像數(shù)據(jù)抽取模型

Oracle數(shù)據(jù)庫Undo日志抽取技術主要包括物理數(shù)據(jù)塊Block處理、數(shù)據(jù)抽取引擎設計兩大部分。本文將對數(shù)據(jù)抽取技術進行詳細闡述。

2.1 Undo KDO結構

前映像日志的 KDO結構記錄數(shù)據(jù)變化關鍵信息,利用Oracle內部工具BBED可以直接查看和修改KDO數(shù)據(jù)。通過BBED工具DUMP日志文件塊查看Oracle內部Undo日志塊內部KDO結構(見
表1)。

表1 Undo KDO結構Tab.1 Undo KDO structure

2.2 數(shù)據(jù)抽取引擎流程設計

在確定KDO結構后,對前映像日志數(shù)據(jù)塊內容進行具體解析。針對前映像數(shù)據(jù)塊內部結構特點,本文設計了日志數(shù)據(jù)抽取引擎,通過獲取數(shù)據(jù)庫版本信息、解析前映像的change第4塊中的KDO數(shù)據(jù),提取其中的操作碼;根據(jù)不同的操作碼采用不同的解析方式,獲取附加日志數(shù)據(jù)塊編號;根據(jù)附加日志結構,獲取附加日志內部的主鍵列數(shù)據(jù);將獲取的主鍵列數(shù)據(jù)依次添加到改變列數(shù)據(jù)中。前映像數(shù)據(jù)抽取引擎如圖5所示。

圖5 前映像數(shù)據(jù)抽取引擎Fig.5 Pre-image data extraction engine

主要流程描述如下:

1)初始化UndoReader、數(shù)據(jù)庫連接,獲取當前日志文件路徑;

2)根據(jù)具體情況,打開存放在文件系統(tǒng)、裸設備、ASM上的日志文件;

3)根據(jù)KDO公共結構解析change第4塊中的KDO數(shù)據(jù);

4)根據(jù)opKDO確定是哪一類DML操作,如果是INSERT操作,則進入步驟5),如果是UPDATE操作,則執(zhí)行步驟8),如果是DELETE操作,則執(zhí)行步驟13);

6)根據(jù)INSERT特定的KDO結構解析change第4塊中余下KDO數(shù)據(jù);

7)從第5塊開始根據(jù)改變列數(shù)量(KDO.cc)讀取各列的值;

8)計算附加日志開始change數(shù)據(jù)塊編號index,然后執(zhí)行步驟15);

9)根據(jù)UPDATE特定的KDO結構解析change第4塊中余下KDO數(shù)據(jù);

10)從第5塊數(shù)據(jù)中獲取改變的列編號,每兩位一個;

11)從第5塊數(shù)據(jù)中獲取改變的列編號,每兩位一個,返回改變列號list;

12)從change第6塊數(shù)據(jù)開始,根據(jù)KDO.nchanged,逐個解析,獲得列數(shù)據(jù),column id與改變列號list對應;

13)獲取附加日志開始change數(shù)據(jù)塊編號index,然后執(zhí)行步驟15);

14)opcode 為delete,無剩余KDO數(shù)據(jù);

15)獲取附加日志開始change數(shù)據(jù)塊編號index = 5;

16)根據(jù)index在change的第index塊中解析附加日志結構;

17)設置附加日志標志信息、開始列信息;

18)從change的index+1塊中讀取主鍵的列id(此id從1而非0開始),得到列號index;

19)從change第index+3塊數(shù)據(jù)開始,根據(jù)opSupplemental.totalCols,逐個解析,獲得主鍵列數(shù)據(jù),column id與列號list對應;

20)添加到之前的改變列數(shù)據(jù)list中,然后重新繼續(xù)新的數(shù)據(jù)抽取。

 3 測試結果與分析

為驗證前映像數(shù)據(jù)抽取模型的可行性,搭建如圖6所示的測試環(huán)境。本文設計的抽取模型軟件系統(tǒng)架構由2部分組成,包括數(shù)據(jù)復制層與管理層。其中數(shù)據(jù)復制層由數(shù)據(jù)庫抽取工具組成,抽取工具分別部署在源端數(shù)據(jù)庫服務器(1臺16核64 GB內存、Oracle11g數(shù)據(jù)庫)、目標端數(shù)據(jù)庫服務器(1臺16核64 GB內存、oracle11g數(shù)據(jù)庫);管理層由數(shù)據(jù)庫抽取管理工具組成,抽取管理工具部署在管理庫服務器(16核64 GB內存、Oracle11g數(shù)據(jù)庫)與應用服務器(16核64 GB內存)。測試環(huán)境中網絡帶寬100 Mb/s,其余測試參數(shù)不再詳述。

圖6 測試環(huán)境拓撲Fig.6 Test environment topology

測試源端數(shù)據(jù)庫執(zhí)行DML操作時,數(shù)據(jù)抽取記錄如圖7所示。

圖7 數(shù)據(jù)抽取記錄Fig.7 Data extraction record

圖7可以看出執(zhí)行的DML操作數(shù)據(jù)已被抽取轉換成數(shù)據(jù)對象格式,數(shù)據(jù)對象記錄了詳細的操作過程數(shù)據(jù),后續(xù)在數(shù)據(jù)投遞到目標端后,可以根據(jù)目標端數(shù)據(jù)庫類型,組裝成相應的SQL語句。

統(tǒng)計結果表明本文設計的前映像數(shù)據(jù)復制模型可以從Undo日志中抽取出變化附加日志信息,將抽取后的數(shù)據(jù)與源數(shù)據(jù)庫信息進行比對,驗證了抽取數(shù)據(jù)的完整性,進一步說明復制模型具有一定的工程應用價值。

 4 結語

數(shù)據(jù)庫前映像數(shù)據(jù)抽取是數(shù)據(jù)復制領域中的關鍵技術,當前業(yè)界主要是以goldenGate為代表的邏輯級數(shù)據(jù)庫日志抽取產品。本文設計了一種高效的數(shù)據(jù)抽取模型,測試結果證明該模型具有較好的實用價值。下一步將針對復雜混合云環(huán)境下分布式數(shù)據(jù)庫前映像數(shù)據(jù)抽取技術進行研究,完善數(shù)據(jù)抽取模型,更好的支撐智能電網建設。

大云網官方微信售電那點事兒

責任編輯:售電衡衡

免責聲明:本文僅代表作者個人觀點,與本站無關。其原創(chuàng)性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容。
我要收藏
個贊
?