System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于數據字典,具體涉及一種基于oracle增量數據的動態數據字典采集方法、采集系統及計算機可讀存儲介質。
技術介紹
1、oracle增量數據挖掘通常會用到名為logminer的數據庫內置工具,使用logminer組件需要指定相應的數據字典源去翻譯logminer挖掘到的redosql里的對象id、字段編號到對應的對象名,可供選擇的數據字典源選項通常是以下三種之一:在線目錄、redo日志文件、導出的數據字典文件。
2、然而,上述三種數據字典源選項各有其優缺點:oracle官方推薦使用在線目錄選項,因為其性能相對較好,但在線目錄要求數據字典不能更改,從而限制了其應用場景;導出的數據字典文件選項與在線目錄選項相似,也要求數據字典不能更改;redo日志文件選項雖然能夠避免上述限制,但其性能相比另外兩種選項差距較大,在很多場景中失去了實用性。
技術實現思路
1、為了克服現有數據字典源選項存在的上述限制,本專利技術提出了一種新的基于oracle增量數據的動態數據字典采集方法,通過使用本專利技術動態數據字典采集方法,既可避免數據字典不得變更的限制,又能避免數據字典性能的大幅下降。
2、我們知道,數據字典中包含數據庫系統里對象的元數據信息,主要是指表及字段的元信息,即表結構的元數據信息。數據庫里的表結構是會隨時間而動態演變的,因而靜態數據字典很多時候不能滿足實際應用需要。鑒于此,本專利技術開發了基于oracle增量變更歷史數據,采集構建動態數據字典的方法,主要包括
3、第一方面,構建初始數據字典結構,包括:
4、通過數據庫的元數據表視圖查詢表名與表id的映射關系、表字段編號與字段名的映射關系。
5、第二方面,采集oracle增量數據并提取增量ddl重做語句,包括:
6、通過logminer組件的sql接口進行增量數據采集,并提取增量ddl重做語句。首先需要添加重做日志,添加在線數據字典選項開啟挖掘,然后從挖掘結果視圖查詢并提取增量ddl重做語句。
7、第三方面,根據增量ddl重做語句解析表結構變更信息,包括:
8、針對上步獲取到的增量ddl重做語句,使用sql語法解析器進行解析處理,得到ddl表達的表結構變更信息。
9、第四方面,根據表結構變更信息動態更新數據字典,包括:
10、根據上步獲取到的表結構變更信息發布結構變更事件,字典維護器提前注冊相應的變更事件處理程序,并跟進接收到的變更事件,觸發相應的變更處理邏輯,將原數據字典與新接收的變更數據進行合并,即可得到動態更新后的新數據字典。
11、具體地,本專利技術提供了一種基于oracle增量數據的動態數據字典采集方法,如圖5所示,本方法包括下述步驟:
12、s1.?構建初始數據字典結構:通過數據庫的元數據表查詢表名與表id的映射關系、表字段編號與字段名的映射關系,構建初始數據字典結構;
13、s2.?采集oracle增量數據并提取增量ddl重做語句:通過logminer組件的sql接口進行oracle增量數據采集,并提取增量ddl重做語句;
14、s3.?根據增量ddl重做語句解析表結構變更信息:針對上步獲取到的增量ddl重做語句,使用sql語法解析器進行解析處理,得到該增量ddl重做語句表達的表結構變更信息;
15、s4.?根據表結構變更信息動態更新數據字典:根據上步獲取到的表結構變更信息發布結構變更事件,字典維護器接收結構變更事件,將原數據字典與新接收的變更數據進行合并,得到動態更新后的新數據字典。
16、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法步驟s1中所述構建初始數據字典結構是指構建一個存儲字典數據的map數據結構,其key為表id,value為表元數據的結構體。
17、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法中所述表元數據的結構體包含模式名、表名、字段編號與字段名的映射map結構。
18、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法步驟s2中包括:
19、s21.?添加重做日志;
20、s22.?添加在線數據字典選項并進行oracle增量數據挖掘;
21、s23.?從挖掘結果視圖中查詢并提取增量ddl重做語句。
22、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法步驟s3中所述表結構變更信息包括字段的增、刪、改變更信息。
23、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法中所述字段的增、刪變更后對應字段編號的變化方式如下:
24、(1)新增字段的編號是當前表字段最大編號加1;
25、(2)刪字段則導致該被刪除字段編號后面的字段的編號減1。
26、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法步驟s3中包括:
27、s31.?針對上步獲取到的增量ddl重做語句,使用sql語法解析器進行解析處理;
28、s32.?得到該增量ddl重做語句表達的表結構變更信息;
29、s33.?判斷該表結構變更信息是否為字段變更,若是則構造字段變更信息并返回,若否則進入下一步;
30、s34.?判斷該表結構變更信息是否為表變更,若是則構造表變更信息并返回,若否則直接返回。
31、進一步地,本專利技術基于oracle增量數據的動態數據字典采集方法步驟s4中包括:
32、s41.?將上步獲取到的表結構變更信息轉換為結構變更事件;
33、s42.?將結構變更事件發布到字典維護器;
34、s43.?字典維護器提前注冊相應的變更事件處理程序,接收到結構變更事件時觸發相應的變更處理流程;
35、s44.?從當前字典數據中尋找事件的表id對應的字典數據,并將其與變更事件的數據進行合并;
36、s45.?合并后的字典數據結構即為新的數據字典,字典維護器循環等待新的變更事件到達。
37、另一方面,本專利技術還提供了一種基于oracle增量數據的動態數據字典采集系統,本采集系統運行時實現上述的基于oracle增量數據的動態數據字典采集方法的步驟。
38、另外,本專利技術還提供了一種計算機可讀存儲介質,所述存儲介質上存儲有計算機程序,所述程序被處理器執行時實現上述的基于oracle增量數據的動態數據字典采集方法的步驟。
39、綜上,本專利技術基于oracle增量數據的動態數據字典采集方法克服了在線目錄、導出的數據字典文件要求數據字典不能更改以及redo日志文件性能低下、實用性較低的缺陷,通過使用本方法,既可避免數據字典不得變更的限制,又能避免數據字典性能的大幅下降。
本文檔來自技高網...【技術保護點】
1.一種基于Oracle增量數據的動態數據字典采集方法,其特征在于,所述方法包括:
2.根據權利要求1所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,步驟S1中所述構建初始數據字典結構是指構建一個存儲字典數據的map數據結構,其key為表ID,value為表元數據的結構體。
3.根據權利要求2所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,所述表元數據的結構體包含模式名、表名、字段編號與字段名的映射map結構。
4.根據權利要求1所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,步驟S2中包括:
5.根據權利要求1所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,步驟S3中所述表結構變更信息包括字段的增、刪、改變更信息。
6.根據權利要求5所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,所述字段的增、刪變更后對應字段編號的變化方式如下:
7.根據權利要求1所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,步驟
8.根據權利要求1所述的基于Oracle增量數據的動態數據字典采集方法,其特征在于,步驟S4中包括:
9.一種基于Oracle增量數據的動態數據字典采集系統,其特征在于,所述采集系統運行時實現權利要求1-8任一項所述的基于Oracle增量數據的動態數據字典采集方法的步驟。
10.一種計算機可讀存儲介質,所述存儲介質上存儲有計算機程序,所述程序被處理器執行時實現權利要求1-8任一項所述的基于Oracle增量數據的動態數據字典采集方法的步驟。
...【技術特征摘要】
1.一種基于oracle增量數據的動態數據字典采集方法,其特征在于,所述方法包括:
2.根據權利要求1所述的基于oracle增量數據的動態數據字典采集方法,其特征在于,步驟s1中所述構建初始數據字典結構是指構建一個存儲字典數據的map數據結構,其key為表id,value為表元數據的結構體。
3.根據權利要求2所述的基于oracle增量數據的動態數據字典采集方法,其特征在于,所述表元數據的結構體包含模式名、表名、字段編號與字段名的映射map結構。
4.根據權利要求1所述的基于oracle增量數據的動態數據字典采集方法,其特征在于,步驟s2中包括:
5.根據權利要求1所述的基于oracle增量數據的動態數據字典采集方法,其特征在于,步驟s3中所述表結構變更信息包括字段的增、刪、改變更信息。...
【專利技術屬性】
技術研發人員:何寶生,鐘曉鋒,
申請(專利權)人:北京海量數據技術股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。