所屬欄目:計算機(jī)網(wǎng)絡(luò)論文 發(fā)布日期:2014-05-06 09:43 熱度:
傳統(tǒng)上,誤刪除了Oracle數(shù)據(jù)庫中的重要表或表中的記錄,提交(COMMIT)成功后,再想恢復(fù)被誤刪除的表格或表格中的數(shù)據(jù),那只能采用數(shù)據(jù)庫備份和恢復(fù)技術(shù),其步驟為:首先利用誤刪除前備份的全部數(shù)據(jù)文件和控制文件將數(shù)據(jù)庫還原到備份狀態(tài),再應(yīng)用在線重做日志文件和歸檔日志文件,將數(shù)據(jù)庫恢復(fù)到誤刪除前的狀態(tài),即執(zhí)行數(shù)據(jù)庫的不完全恢復(fù),這樣做不但需要數(shù)據(jù)庫全備份,且操作復(fù)雜,耗費(fèi)時間較長,在恢復(fù)期間數(shù)據(jù)庫還必需關(guān)閉,不能使用。從Oracle9i開始,利用新提供的閃回功能,被誤刪除的表或表中的數(shù)據(jù)恢復(fù)可以更加方便、快捷。Oracle閃回功能在10g、11g又分別得到了加強(qiáng)。
摘要:當(dāng)數(shù)據(jù)庫發(fā)生誤刪除等邏輯錯誤時,傳統(tǒng)上只能通過執(zhí)行不完全恢復(fù)來恢復(fù)數(shù)據(jù),本文介紹了通過3種閃回技術(shù),提高效率恢復(fù)數(shù)據(jù)庫邏輯錯誤的方法,并對3種閃回技術(shù)進(jìn)行了分析比較。
關(guān)鍵詞:計算機(jī)網(wǎng)絡(luò)論文,備份與恢復(fù),閃回數(shù)據(jù)庫,閃回表,閃回刪除
1閃回技術(shù)的功能
為了演示閃回功能,先在sql*plus中執(zhí)行以下語句,創(chuàng)建測試表testta,表中插入3條新記錄后,提交插入事務(wù)。
SQL>CREATETABLEtestta(idINT,nameVARCHAR2(4));
SQL>INSERTINTOtesttaVALUES(1,'aaaa');
SQL>INSERTINTOtesttaVALUES(2,'bbbb');
SQL>INSERTINTOtesttaVALUES(3,'cccc');
SQL>COMMIT;
再執(zhí)行以下語句,設(shè)置顯示當(dāng)前時間:
SQL>SETTIMEON
刪除testta表中全部3條記錄:
14:11:29SQL>DELETEtestta;
提交刪除事務(wù):
14:12:30SQL>COMMIT;
14:12:34SQL>SELECT*FROMtestta;
表testta中已沒有記錄。由于刪除事務(wù)已提交成功,如想恢復(fù)被刪除的記錄,傳統(tǒng)的方法只能是執(zhí)行數(shù)據(jù)庫的不完全恢復(fù)。現(xiàn)在采用閃回數(shù)據(jù)庫(FlashbackDatabase)的方法恢復(fù)刪除數(shù)據(jù),操作如下。
關(guān)閉數(shù)據(jù)庫,將數(shù)據(jù)庫設(shè)置到裝載(mount)狀態(tài)。
14:14:47SQL>SHUTDOWNIMMEDIATE
14:15:04SQL>STARTUPMOUNT
利用閃回數(shù)據(jù)庫的方法,將數(shù)據(jù)庫整體調(diào)整到刪除數(shù)據(jù)前的某一時間。
14:16:10SQL>FLASHBACKDATABASETOTIMESTAMPTO_DATE(‘2013-12-2314:11:27’,’yyyy-mm-ddhh24:mi:ss’);
使用RESETLOGS選項(xiàng),打開數(shù)據(jù)庫。
14:17:07SQL>ALTERDATABASEOPENRESETLOGS;
查詢testta表內(nèi)容。
14:17:42SQL>SELECT*FROMtestta;
執(zhí)行后,部分顯示結(jié)果如下:
IDNAME
--------------
1aaaa
2bbbb
3cccc
結(jié)果顯示說明,testta表中被刪除的數(shù)據(jù)已經(jīng)恢復(fù)。
2閃回數(shù)據(jù)庫的操作
閃回數(shù)據(jù)庫就像數(shù)據(jù)庫上的倒帶按鈕,可以把整個數(shù)據(jù)庫回退到過去的某個時點(diǎn)狀態(tài),其最終結(jié)果就像執(zhí)行了不完整恢復(fù)。因此,閃回數(shù)據(jù)庫不但能恢復(fù)像以上例子中被刪除表中的記錄,也能恢復(fù)被刪除的表、視圖等數(shù)據(jù)庫其他對象,還能恢復(fù)被刪除了的用戶等。但此種方法也有其局限性,一是恢復(fù)到過去某一時間點(diǎn)后,則數(shù)據(jù)庫的全部內(nèi)容都被恢復(fù)到當(dāng)時時間點(diǎn)狀態(tài),如果只是誤刪除了某個表中的記錄,而只想恢復(fù)該表的內(nèi)容,則不宜采用閃回數(shù)據(jù)庫的方法;二是采用閃回數(shù)據(jù)庫的方法,必須要先關(guān)閉數(shù)據(jù)庫。為了克服閃回數(shù)據(jù)庫的缺陷,可采用以下閃回表(FlashbackTable)的方法,恢復(fù)被刪除的記錄,操作如下:
創(chuàng)建測試表testtb,在表中插入3條新記錄后,提交插入事務(wù):
14:43:09SQL>CREATETABLEtesttb(idINT,nameVARCHAR2(4));
14:43:20SQL>INSERTINTOtesttbVALUES(1,’aaaa’);
14:43:20SQL>INSERTINTOtesttbVALUES(2,’bbbb’);
14:43:20SQL>INSERTINTOtesttbVALUES(3,’cccc’);
14:43:20SQL>COMMIT;
刪除testtb表中全部3條記錄:
14:44:16SQL>DELETEtesttb;
提交刪除事務(wù):
14:44:26SQL>COMMIT;
14:44:28SQL>SELECT*FROMtesttb;
刪除事務(wù)已提交成功,testtb表中已沒有記錄。現(xiàn)采用閃回表的方法恢復(fù)刪除數(shù)據(jù)。
閃回表的前提是啟動被操作表的行移動(ROWMOVEMENT)特性。先啟動表testtb的行移動特性:14:44:32SQL>ALTERTABLEtesttbENABLEROWMOVEMENT;
利用閃回表的方法,將testtb表恢復(fù)到刪除數(shù)據(jù)前的某一時間。
14:45:27SQL>FLASHBACKTABLEtesttbTOTIMESTAMPTO_TIMESTAMP(‘2013-12-2314:44:00’,‘YYYY-MM-DDHH24:MI:SS’);
查詢testtb表內(nèi)容:
14:45:28SQL>SELECT*FROMtesttb;
執(zhí)行后,部分顯示結(jié)果如下:
IDNAME
--------------
1aaaa
2bbbb
3cccc
結(jié)果顯示說明,testtb表中被刪除的數(shù)據(jù)已經(jīng)恢復(fù)。
3閃回表
閃回表能夠恢復(fù)指定表中的記錄內(nèi)容,而不改變數(shù)據(jù)庫其他對象的內(nèi)容。但數(shù)據(jù)恢復(fù)中,閃回表必須啟用被操作表的行移動特性,且只能進(jìn)行閃回表的DML操作,不能進(jìn)行閃回DDL操作。如果用戶刪除了(DROP)表,則不能采用閃回表的方法恢復(fù),此時可以有采用上面介紹的閃回數(shù)據(jù)庫的方法恢復(fù)整個數(shù)據(jù)庫,也可以采用以下閃回刪除(FlashbackDrop)的方法,其操作如下:
創(chuàng)建測試表testtc,表中插入3條新記錄后,提交插入事務(wù):
16:10:43SQL>CREATETABLEtesttc(idINT,nameVARCHAR2(4));
16:10:44SQL>INSERTINTOtesttcVALUES(1,’aaaa’);
16:10:44SQL>INSERTINTOtesttcVALUES(2,’bbbb’);
16:10:44SQL>INSERTINTOtesttcVALUES(3,’cccc’);
16:10:46SQL>COMMIT;
刪除testtb表:
16:11:55SQL>DROPTABLEtesttc;
從回收站中閃回刪除的testtc表:
16:12:34SQL>FLASHBACKTABLEtesttcTOBEFOREDROP;
查詢testtc表內(nèi)容:
16:13:19SQL>SELECT*FROMtesttc;
執(zhí)行后,部分顯示結(jié)果如下:
IDNAME
--------------
1aaaa
2bbbb
3cccc
結(jié)果顯示說明,被刪除testtc表已從回收站中恢復(fù)。
Oracle在刪除一個表時,并不立即丟棄它,而是把它放在回收站中,并保留盡可能長的時間。閃回刪除能夠像Windows操作系統(tǒng)一樣,將回收站中被刪除的對象方便地恢復(fù),但閃回刪除只能恢復(fù)表、索引等對象,對于用戶等對象,閃回刪除無能為力。
通過以上驗(yàn)證可能看出,采用閃回技術(shù),可以針對行級和事務(wù)級發(fā)生過變化的數(shù)據(jù)進(jìn)行恢復(fù),縮短數(shù)據(jù)恢復(fù)的時間,且操作簡單,這樣做大大提高了數(shù)據(jù)庫恢復(fù)的效率。
4結(jié)語
最后,我們需要再說明以下幾點(diǎn):一是閃回技術(shù)具有強(qiáng)大且簡便的數(shù)據(jù)庫恢復(fù)功能,是否就不需要再做數(shù)據(jù)庫備份和不完全恢復(fù)了呢?答案是否定的,因?yàn)楫?dāng)出現(xiàn)介質(zhì)損壞時,任何閃回方法都是毫無用處,此時,只能執(zhí)行標(biāo)準(zhǔn)的備份、還原與恢復(fù)過程;二是要實(shí)現(xiàn)各種閃回功能,必須要先對數(shù)據(jù)庫進(jìn)行相應(yīng)設(shè)置,如啟動閃回數(shù)據(jù)庫、啟動數(shù)據(jù)庫的“回收站”、啟動表的行移動等;三是除了以上介紹的3種閃回技術(shù)外,還要有閃回版本查詢(FlashbackVersionQuery)、閃回事務(wù)查詢(FlashbackTransactionQuery)、閃回查詢(FlashbackQuery)和閃回數(shù)據(jù)歸檔(FlashbackDataArchive)等閃回方法。
參考文獻(xiàn)
[1]張曉明.OracleDBA突擊[M].北京:人民郵電出版社,2009.
[2]王東明.Oracle11g管理備份恢復(fù)從入門到精通[M].北京:中國水利水電出版社,2008.
[3]汪照東.Oracle11g數(shù)據(jù)庫管理與優(yōu)化寶典[M].北京:電子工業(yè)出版社,2008.
[4]曾傳軍,傅秀芬,彭小玲,等.Oracle閃回技術(shù)在數(shù)據(jù)恢復(fù)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2010(16):94-96,99.
[5]夏月平.關(guān)于Oracle閃回技術(shù)的應(yīng)用研究分析[J].科學(xué)與財富,2011(11):314-316.
文章標(biāo)題:計算機(jī)網(wǎng)絡(luò)論文閃回技術(shù)在數(shù)據(jù)庫誤刪除中的應(yīng)用
轉(zhuǎn)載請注明來自:http://www.56st48f.cn/fblw/dianxin/wangluo/20909.html
攝影藝術(shù)領(lǐng)域AHCI期刊推薦《Phot...關(guān)注:107
Nature旗下多學(xué)科子刊Nature Com...關(guān)注:152
中小學(xué)教師值得了解,這些教育學(xué)...關(guān)注:47
2025年寫管理學(xué)論文可以用的19個...關(guān)注:192
測繪領(lǐng)域科技核心期刊選擇 輕松拿...關(guān)注:64
及時開論文檢索證明很重要關(guān)注:52
中國水產(chǎn)科學(xué)期刊是核心期刊嗎關(guān)注:54
國際出書需要了解的問題解答關(guān)注:58
合著出書能否評職稱?關(guān)注:48
電信學(xué)有哪些可投稿的SCI期刊,值...關(guān)注:66
通信工程行業(yè)論文選題關(guān)注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關(guān)注:121
評職稱發(fā)論文好還是出書好關(guān)注:68
復(fù)印報刊資料重要轉(zhuǎn)載來源期刊(...關(guān)注:51
英文期刊審稿常見的論文狀態(tài)及其...關(guān)注:69
Web of Science 核心合集期刊評估...關(guān)注:59
電子信息論文范文
智能科學(xué)技術(shù)論文 廣播電視論文 光電技術(shù)論文 計算機(jī)信息管理論文 計算機(jī)網(wǎng)絡(luò)論文 計算機(jī)應(yīng)用論文 通信論文 信息安全論文 微電子應(yīng)用論文 電子技術(shù)論文 生物醫(yī)學(xué)工程論文 軟件開發(fā)論文
SCI期刊分析
copyright © www.56st48f.cn, All Rights Reserved
搜論文知識網(wǎng) 冀ICP備15021333號-3