一種基于Oracle數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種基于Oracle數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法。
【背景技術(shù)】
[0002]Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它是在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品??梢哉fOracle數(shù)據(jù)庫系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類大、中、小、微機(jī)環(huán)境。它是一種高效率、可靠性好的適應(yīng)高吞吐量的數(shù)據(jù)庫解決方案;一個(gè)數(shù)據(jù)庫含有各種成分,包括表、視圖、存儲(chǔ)過程、記錄、字段、索引等。
[0003]但是數(shù)據(jù)庫有時(shí)也會(huì)發(fā)生故障,導(dǎo)致無法訪問數(shù)據(jù),其中數(shù)據(jù)庫損壞常見的原因有以下幾種:事務(wù)日志問題。比如事務(wù)日志文件丟失;事務(wù)日志文件在操作過程中被誤刪;事務(wù)日志文件被損壞以及事務(wù)日志文件過大,導(dǎo)致硬盤的空間不足等;意外掉電或異常強(qiáng)制關(guān)機(jī),造成數(shù)據(jù)文件損壞,主要數(shù)據(jù)庫正在被讀寫過程中異常關(guān)機(jī);數(shù)據(jù)庫的表被破壞或索引等被破壞,或者數(shù)據(jù)庫的其他對象被破壞或丟失等;刪除了數(shù)據(jù)文件,或者更改了它的名字;硬盤損壞,造成數(shù)據(jù)和日志文件讀寫錯(cuò)誤等;這些錯(cuò)誤中部分?jǐn)?shù)據(jù)庫自己是可以采取容災(zāi)機(jī)制處理,保證數(shù)據(jù)可以正常訪問,但是針對數(shù)據(jù)庫表破壞,數(shù)據(jù)庫被刪除,或者數(shù)據(jù)文件被刪除,此時(shí)數(shù)據(jù)庫本身無法修復(fù),就需要一個(gè)專門的方法來解決這些問題,解決辦法大多是恢復(fù)丟失的數(shù)據(jù)庫文件,進(jìn)而恢復(fù)記錄,但是如果文件是以碎片的形式存儲(chǔ),市面上有一些恢復(fù)數(shù)據(jù)庫的方法就無從下手了 ;在此時(shí)就需要用到按照記錄特征的方法來完成數(shù)據(jù)恢復(fù),最大程度的保全關(guān)鍵數(shù)據(jù)的完整性。
[0004]本發(fā)明涉及到的部分專業(yè)術(shù)語:
[0005]Oracle數(shù)據(jù)庫-Oracle數(shù)據(jù)庫由于表空間和數(shù)據(jù)庫模式對象組成。這里,模式是對象的集合,而模式對象是直接引用數(shù)據(jù)庫數(shù)據(jù)的邏輯結(jié)構(gòu)。模式對象包括這樣一些結(jié)構(gòu):表、視圖、序列、存儲(chǔ)過程、同義詞、索引、簇和數(shù)據(jù)庫鏈等。邏輯存儲(chǔ)結(jié)構(gòu)包括表空間、段和范圍,用于描述怎樣使用數(shù)據(jù)庫的物理空間??傊?,邏輯結(jié)構(gòu)由邏輯存儲(chǔ)結(jié)構(gòu)(表空間,段,范圍,塊)和邏輯數(shù)據(jù)結(jié)構(gòu)(表、視圖、序列、存儲(chǔ)過程、同義詞、索引、簇和數(shù)據(jù)庫鏈等)組成,而其中的模式對象(邏輯數(shù)據(jù)結(jié)構(gòu))和關(guān)系形成了數(shù)據(jù)庫的關(guān)系設(shè)計(jì)。在Oracle數(shù)據(jù)庫中,用戶數(shù)據(jù)總是儲(chǔ)存在自己創(chuàng)建的后綴名為DBF的表空間中。Oracle數(shù)據(jù)庫在丟失或者異常時(shí),可以咨詢數(shù)據(jù)庫管理員是否有備份的一樣結(jié)構(gòu)數(shù)據(jù)庫,有則直接查看這個(gè)數(shù)據(jù)庫中需要恢復(fù)的數(shù)據(jù)表,沒有則按照數(shù)Oracle據(jù)庫的設(shè)計(jì)文檔來確定數(shù)據(jù)庫中的表參數(shù),如果都沒有就只能在底層按照關(guān)鍵字段進(jìn)行人工分析出數(shù)據(jù)表,具體操作就是按照已知的字段在Oracle數(shù)據(jù)庫中按照GB2312編碼在存儲(chǔ)介質(zhì)中檢索找到字段,再結(jié)合數(shù)據(jù)庫管理員提供的參數(shù)確定出關(guān)鍵表。
[0006]數(shù)據(jù)表:數(shù)據(jù)表(Table)簡稱表,由一組數(shù)據(jù)記錄組成,數(shù)據(jù)庫中的數(shù)據(jù)是以表為單位進(jìn)行組織的。一個(gè)表是一組相關(guān)的按行排列的數(shù)據(jù);每個(gè)表中都含有相同類型的信息。表實(shí)際上是一個(gè)二維表格,例如,一個(gè)班所有學(xué)生的考試成績,可以存放在一個(gè)表中,表中的每一行對應(yīng)一個(gè)學(xué)生,這一行包括學(xué)生的學(xué)號,姓名及各門課程成績。
[0007]記錄:表中的每一行稱為一個(gè)記錄,它由若干個(gè)字段組成。
[0008]字段:也稱域。表中的每一列稱為一個(gè)字段。每個(gè)字段都有相應(yīng)的描述信息,如數(shù)據(jù)類型、數(shù)據(jù)寬度等。
【發(fā)明內(nèi)容】
[0009]本發(fā)明針對現(xiàn)有技術(shù)的缺陷,提供了一種基于Oracle數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,能有效的解決上述現(xiàn)有技術(shù)存在的問題。
[0010]為了實(shí)現(xiàn)以上發(fā)明目的,本發(fā)明采取的技術(shù)方案如下:
[0011]一種基于Oracle數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,包括以下步驟:
[0012]S1:找Oracle數(shù)據(jù)庫備份或者數(shù)據(jù)庫設(shè)計(jì)文檔,確定數(shù)據(jù)庫中的數(shù)據(jù)表;
[0013]S2:根據(jù)SI中的數(shù)據(jù)庫備份或者數(shù)據(jù)庫設(shè)計(jì)文檔選擇并找到需要恢復(fù)數(shù)據(jù)的數(shù)據(jù)表,并得到表的所有信息;
[0014]S3:根據(jù)S2的數(shù)據(jù)表可以得到數(shù)據(jù)表中的每個(gè)記錄的邏輯結(jié)構(gòu)關(guān)系;
[0015]S4:根據(jù)數(shù)據(jù)庫的類型說明與數(shù)據(jù)庫的設(shè)計(jì)文檔可以得到字段的具體信息;字段信息包括:數(shù)據(jù)類型、數(shù)據(jù)長度、數(shù)據(jù)排邏輯順序;
[0016]S5:由SI,S2,S3,S4的參數(shù)分析得到數(shù)據(jù)庫存儲(chǔ)的邏輯關(guān)系,得到數(shù)據(jù)恢復(fù)邏輯結(jié)構(gòu)特征;
[0017]S6:得到數(shù)據(jù)表的邏輯結(jié)構(gòu)特征,我們可以按照關(guān)鍵記錄的排列順序、字段的數(shù)據(jù)類型、字段數(shù)據(jù)寬度信息,將這些信息按照數(shù)據(jù)提取邏輯特征算法在介質(zhì)中提取關(guān)鍵的記錄數(shù)據(jù),將這些數(shù)據(jù)組成數(shù)據(jù)表形式,并提取。
[0018]作為優(yōu)選,所述S5的詳細(xì)流程如下:
[0019]S501:檢索所有記錄的頭特征,找到所有記錄的頭;具體的在Oracle數(shù)據(jù)庫一般是使用“0X2C01”兩個(gè)字節(jié)作為數(shù)據(jù)特征頭;
[0020]S502:根據(jù)數(shù)據(jù)表中的記錄確定字段的組成結(jié)構(gòu),可以按照記錄的排列順序、字段的數(shù)據(jù)類型、數(shù)據(jù)寬度信息得到的字段結(jié)構(gòu),按照上述結(jié)構(gòu)分隔所有記錄頭后面的字段。
[0021]作為優(yōu)選,所述S502具體為:找到第一個(gè)記錄頭特征“0x20)1”,該特征后一字節(jié)為此記錄的列數(shù),在向后一字節(jié)為第一個(gè)字段的大小,向后為該字段內(nèi)容,內(nèi)容后的第一個(gè)字節(jié)為下一個(gè)字段大小,如此循環(huán)直至下一個(gè)記錄的頭部特征“0x2C01”,在進(jìn)行下一個(gè)記錄的結(jié)構(gòu)分析,直至完成所有表中的記錄。
[0022]與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點(diǎn)在于:通過Oracle數(shù)據(jù)庫結(jié)構(gòu),解析數(shù)據(jù)表中的記錄和字段,找到每條記錄的頭部和字段的結(jié)構(gòu)劃分?jǐn)?shù)據(jù)后提取,恢復(fù)數(shù)據(jù)效率高,對數(shù)據(jù)損壞,數(shù)據(jù)不連續(xù)的碎片級數(shù)據(jù)庫也可以正常提取和恢復(fù),數(shù)據(jù)恢復(fù)成功率高,有效降低因數(shù)據(jù)庫損壞帶來的損失。
【附圖說明】
[0023]圖1為本發(fā)明實(shí)施例中記錄的結(jié)構(gòu)示意圖;
[0024]圖2為本發(fā)明實(shí)施例中記