一種mdb文件數(shù)據(jù)的恢復(fù)方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫文件數(shù)據(jù)分析處理領(lǐng)域,具體說的是一種MDB文件數(shù)據(jù)的恢復(fù) 方法及其系統(tǒng)。
【背景技術(shù)】
[0002] Microsoft Office Access軟件開發(fā)的Microsoft JET數(shù)據(jù)庫提供一種MDB數(shù)據(jù)庫 文件格式。access數(shù)據(jù)庫本身是沒有提供刪除記錄和刪除表格恢復(fù)的功能,因?yàn)樗旧硎?一個(gè)實(shí)時(shí)增加、重組的數(shù)據(jù)庫,沒有辦法全部緩沖刪除的記錄。
[0003] Microsoft沒有也不會(huì)提供MDB格式二進(jìn)制組織方式,目前國(guó)內(nèi)外已有的研究資料 也是說MDB中誤刪除的記錄、誤刪除的表格是無法恢復(fù)的,因?yàn)锳CCESS數(shù)據(jù)庫本身是沒有物 理刪除和邏輯刪除的概念的,一旦刪除就無法恢復(fù)了。也就是說針對(duì)于刪除的數(shù)據(jù),如果不 考慮備份數(shù)據(jù)的話只有通過解析文件的方法來進(jìn)行恢復(fù)。
[0004] Microsoft Access MDB文件格式有Jet3和Jet4兩種,而Jet格式的文件在創(chuàng)建之 初會(huì)有一部分初始化的數(shù)據(jù)。目前研究中發(fā)現(xiàn)MDB文件有一些固定的結(jié)構(gòu):
[0005] 1、MDB文件由固定大小的頁組成,文件中所有的數(shù)據(jù)都存儲(chǔ)在頁中,Jet3格式中頁 的大小為2k,Jet4中頁的大小為4k;
[0006] 2、固有的系統(tǒng)表包括:窗體、宏、報(bào)表、模塊、數(shù)據(jù)表、查詢、列表等等。他們?cè)谖募?新建的時(shí)候就被創(chuàng)建,有著固定的偏移位置/入口,其中系統(tǒng)表MSysObjects中包含所有表 格的定義表格頁的相對(duì)偏移地址;
[0007] 3、每個(gè)頁第一個(gè)字節(jié)就是類型定義簽名。除了文件開始的頁(包括文件版本信息、 密碼等等)有著自身特有的簽名,其它頁的類型由每個(gè)頁的簽名標(biāo)識(shí)。頁的種類有:數(shù)據(jù)庫 定義頁(簽名:〇χ〇〇)、數(shù)據(jù)頁(簽名:〇χ〇1)、表格定義頁(簽名:〇χ〇2)、中間索引頁(簽名: 0x03)、葉子索引頁(簽名:0x04)、文件已用頁分布圖(簽名:0x05)、刪除表格的表格定義頁 (簽名:0x08)等等。
[0008] MDB文件表格相關(guān)頁的說明:
[0009] 對(duì)于一個(gè)表格(不管是系統(tǒng)表還是用戶自己創(chuàng)建的表格)重要的頁包括:表格的定 義頁(一個(gè)表格唯一對(duì)應(yīng)一個(gè)定義頁)、索引頁(包括中間索引頁、葉子索引頁)、數(shù)據(jù)頁(包 括溢出頁)。
[0010] MDB文件簡(jiǎn)單的分布結(jié)構(gòu)如圖1所示:
[0011] 不管是系統(tǒng)表還是用戶表,始終包括如圖2所示的三部分:
[0012] 表格不同頁之間的聯(lián)系如下:
[0013] 1、表格定義頁中的信息有:列/字段的定義(即段定義),具體包括列名稱、列類型、 列的長(zhǎng)度等,規(guī)定每一列所存儲(chǔ)的數(shù)據(jù)類型;該表格的索引頁的相對(duì)偏移地址,指向中間索 引頁或者葉子索引頁們,可以由中間索引頁找到葉子索引頁。
[0014] 2、索引頁中包含的信息:表格定義頁的相對(duì)偏移,中間索引頁指向所有的葉子索 引頁,葉子索引頁中存儲(chǔ)著表格數(shù)據(jù)頁的相對(duì)偏移地址。
[0015] 3、數(shù)據(jù)頁包含的信息:表格定義頁的相對(duì)偏移地址、正常的記錄、刪除的記錄、溢 出數(shù)據(jù)等。當(dāng)然數(shù)據(jù)也還包括備注頁等等其他信息。
[0016] 可見,表格定義頁指向索引頁,索引頁指向數(shù)據(jù)頁,而數(shù)據(jù)頁和索引頁都指向表格 定義頁。因?yàn)镸DB文件由頁組成,所以文中提到的所有指向頁均意為相對(duì)于文件首頁,該頁 的頁偏移量。
[0017] 在Microsoft Access MDB文件中刪除一條記錄的時(shí)候,會(huì)提示說不可恢復(fù)。具體 的,MDB文件數(shù)據(jù)的刪除,是以每一行為單位的數(shù)據(jù)刪除,當(dāng)數(shù)據(jù)刪除后,該行數(shù)據(jù)在數(shù)據(jù)頁 中的記錄的簽名標(biāo)識(shí)位將從0變?yōu)镃,但是對(duì)應(yīng)數(shù)據(jù)頁包含的記錄總數(shù)沒有改變。在ACCESS 數(shù)據(jù)庫實(shí)時(shí)增加和重組的特性下,若所刪除數(shù)據(jù)記錄還存儲(chǔ)在磁盤中,則可以實(shí)現(xiàn)數(shù)據(jù)的 恢復(fù)。
【發(fā)明內(nèi)容】
[0018] 本發(fā)明所要解決的技術(shù)問題是:提供一種MDB文件數(shù)據(jù)的恢復(fù)方法,實(shí)現(xiàn)已刪除的 MDB文件數(shù)據(jù)的恢復(fù)。
[0019] 為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:
[0020] 一種MDB文件數(shù)據(jù)的恢復(fù)方法,包括:
[0021]獲取Jet格式的MDB文件;
[0022]確定已刪除數(shù)據(jù)刪除前所處的表格;
[0023] 解析所述MDB文件的系統(tǒng)表,獲取所述表格的表格定義頁;
[0024] 解析所述表格定義頁,得到所述表格的列定義信息;
[0025]獲取所述表格的數(shù)據(jù)頁;
[0026]依據(jù)所述數(shù)據(jù)頁中記錄的偏移地址的簽名標(biāo)識(shí)位,獲取所述已刪除數(shù)據(jù)的刪除記 錄;
[0027]依據(jù)所述刪除記錄的偏移地址以及所述列定義信息,獲取對(duì)應(yīng)所述刪除記錄的已 刪除數(shù)據(jù)。
[0028]本發(fā)明提供的另一個(gè)技術(shù)方案為:
[0029] 一種MDB文件數(shù)據(jù)的恢復(fù)系統(tǒng),包括:
[0030] 第一獲取模塊,用于獲取Jet格式的MDB文件;
[0031] 確定模塊,用于確定已刪除數(shù)據(jù)刪除前所處的表格;
[0032] 解析模塊,用于解析所述MDB文件的系統(tǒng)表;
[0033] 第二獲取模塊,用于獲取所述表格的表格定義頁;
[0034] 第三獲取模塊,用于獲取所述表格的數(shù)據(jù)頁;
[0035] 第四獲取模塊,用于依據(jù)所述數(shù)據(jù)頁中記錄的偏移地址的簽名標(biāo)識(shí)位,獲取所述 已刪除數(shù)據(jù)的刪除記錄;
[0036] 第五獲取模塊,用于依據(jù)所述刪除記錄的偏移地址以及所述列定義信息,獲取對(duì) 應(yīng)所述刪除記錄的已刪除數(shù)據(jù)。
[0037]本發(fā)明的有益效果在于:解決現(xiàn)有技術(shù)無法實(shí)現(xiàn)已刪除MDB文件數(shù)據(jù)的恢復(fù),無法 滿足MDB文件數(shù)據(jù)恢復(fù)需求的問題。本發(fā)明提供一種MDB文件數(shù)據(jù)的恢復(fù)方法及其系統(tǒng);基 于表格的數(shù)據(jù)都被記錄在數(shù)據(jù)頁中,而表格的列定義信息都被存儲(chǔ)在表格定義頁中,因此, 只需通過確定已刪除數(shù)據(jù)在數(shù)據(jù)頁中的刪除記錄,然后按照對(duì)應(yīng)的列定義信息解析,即可 實(shí)現(xiàn)已刪除MDB文件數(shù)據(jù)的恢復(fù)。本發(fā)明通過解析存儲(chǔ)有所有表格的表格定義頁位置的系 統(tǒng)表,獲取待恢復(fù)MDB文件數(shù)據(jù)刪除前所處的表格所對(duì)應(yīng)的表格定義頁,解析表格定義頁得 到列定義信息;然后獲取表格的數(shù)據(jù)頁,依據(jù)數(shù)據(jù)刪除后簽名標(biāo)識(shí)位的變化,以及列定義信 息,解析獲取已刪除數(shù)據(jù)?;贛DB數(shù)據(jù)本身的結(jié)構(gòu)信息實(shí)現(xiàn)了高準(zhǔn)確性、完整地恢復(fù)MDB文 件數(shù)據(jù),為誤刪數(shù)據(jù)的恢復(fù)提供有效的補(bǔ)救措施,更好的滿足人們的需求。
【附圖說明】
[0038]圖1為MDB文件的分布結(jié)構(gòu)圖;
[0039] 圖2為MDB文件表格的結(jié)構(gòu)組成示意圖;
[0040] 圖3本發(fā)明一種MDB文件數(shù)據(jù)的恢復(fù)方法的流程示意圖;
[0041 ]圖4為本發(fā)明實(shí)施例一一種MDB文件數(shù)據(jù)的恢復(fù)方法的流程示意圖;
[0042] 圖5為本發(fā)明實(shí)施例二一種MDB文件數(shù)據(jù)的恢復(fù)方法的流程示意圖;
[0043] 圖6為本發(fā)明一種MDB文件數(shù)據(jù)的恢復(fù)系統(tǒng)的功能模塊結(jié)構(gòu)組成示意圖;
[0044] 圖7為本發(fā)明實(shí)施例三一種MDB文件數(shù)據(jù)的恢復(fù)系統(tǒng)的功能模塊結(jié)構(gòu)組成示意圖;
[0045] 圖8為本發(fā)明實(shí)施例四一種MDB文件數(shù)據(jù)的恢復(fù)系統(tǒng)的功能模塊結(jié)構(gòu)組成示意圖; [0046]圖9為運(yùn)用本發(fā)明的MDB文件數(shù)據(jù)的恢復(fù)方法恢復(fù)得到的MDB文件數(shù)據(jù)結(jié)果示意 圖。
[0047] 標(biāo)號(hào)說明:
[0048] 1、第一獲取模塊;2、確定模塊;3、解析模塊;4、第二獲取模塊;
[0049] 5、第三獲取模塊;6、第四獲取模塊;7、第五獲取模塊;
[0050] 71、第一獲取單元;72、解析單元;
[00511 721、判斷單元;722、第二獲取單元;723、第三獲取單元。
【具體實(shí)施方式】
[0052]為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附 圖予以說明。
[0053]本發(fā)明最關(guān)鍵的構(gòu)思在于:獲取已刪除數(shù)據(jù)刪除前所處表格的列定義信息,以及 表格的數(shù)據(jù)頁;依據(jù)數(shù)據(jù)刪除后的簽名標(biāo)識(shí)位確定刪除記錄,再依據(jù)列定義信息以及刪除 記錄的偏移地址,獲取已刪除數(shù)據(jù)。
[0054]