摘要:為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅速地恢復(fù),Oracle推出了閃回技術(shù)。該技術(shù)是數(shù)據(jù)恢復(fù)技術(shù)歷史上一次重大的進(jìn)步,從根本上改變了數(shù)據(jù)恢復(fù),大大提高了恢復(fù)的效率。從閃回的方式可以分為基于數(shù)據(jù)庫級別閃回、表級別閃回、事務(wù)級別閃回,根據(jù)閃回對數(shù)據(jù)的影響程度又可以分為閃回恢復(fù),閃回查詢。閃回恢復(fù)將修改數(shù)據(jù),閃回點之后的數(shù)據(jù)將全部丟失。而閃回查詢則可以查詢數(shù)據(jù)被DML的不同版本,也可以在此基礎(chǔ)之上確定是否進(jìn)行恢復(fù)等。Oracle11g的閃回技術(shù)延續(xù)了Oracle10g的功能,但又有所增強(qiáng)。在五大閃回功能的基礎(chǔ)上新添了閃回數(shù)據(jù)歸檔技術(shù)。
關(guān)鍵詞:數(shù)據(jù)庫;Oracle;閃回
中圖分類號:TP309.3 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 23-0000-02
在日常數(shù)據(jù)庫使用過程中,人為錯誤是導(dǎo)致停機(jī)的最大原因,例如delete、update,并最終提交了修改。一般發(fā)生這樣的情況我們只能采用邏輯備份或者物理備份進(jìn)行恢復(fù)來糾正這樣的錯誤,而這種方法極其復(fù)雜和低效。為了使Oracle數(shù)據(jù)庫從任何邏輯誤操作中迅速地恢復(fù),Oracle推出了閃回技術(shù)。閃回是讓管理員“倒回”數(shù)據(jù)庫上的活動的一項功能。利用閃回技術(shù),更正錯誤的時間與錯誤發(fā)生的時間幾乎相同。它非常易用,使用一條短命令便可恢復(fù)整個數(shù)據(jù)庫,而不必執(zhí)行復(fù)雜的操作步驟,大大提高了數(shù)據(jù)安全性和完整性。
從Oracle9i開始,逐漸引入了閃回的概念,該技術(shù)首先以閃回查詢(Flashback Query)出現(xiàn)在Oracle9i中,后來在Oracle10g中對該技術(shù)進(jìn)行了全面擴(kuò)展,提供了閃回數(shù)據(jù)庫、閃回刪除、閃回表、閃回事物及閃回版本查詢等功能。在Oracle11g中,繼續(xù)對該技術(shù)進(jìn)行改進(jìn)和增強(qiáng),并且增加了閃回數(shù)據(jù)歸檔功能。下面主要談?wù)凮racle11g的閃回技術(shù),包括閃回技術(shù)的使用及特性。
1 閃回表(Flashback Table)
使用該技術(shù),可以確保數(shù)據(jù)庫表能夠被恢復(fù)到之前的某個時間點上。特別需要注意的是,該功能與最早的9i中的Flashback query不同,flashback query僅僅是得到了表在之的某個時間點上的快照而已,并不改變當(dāng)前表的狀態(tài);而Flashback table卻能夠?qū)⒈砑案綄賹ο笠黄鸹謴?fù)到以前的某個時間點。
2 閃回版本查詢(Flashback Version Query)
通過此功能,可以看到特定的表某個時間段內(nèi)所進(jìn)行的任何修改操作,如同電影回放一樣,該表在該時間段內(nèi)的變化一覽無余,F(xiàn)lashback Versions Query允許我們查看某條記錄所有已提交的版本,注意是已提交。
3 閃回事務(wù)查詢(Flashback Transaction Query)
Oracle9i以上(包括9i)版本均有此功能。使用該特性,可以在事物級別上檢查數(shù)據(jù)庫的任何改變,大大方便了對數(shù)據(jù)庫的性能優(yōu)化、事務(wù)審計及錯誤診斷等操作。和前面兩種新特性不同的是,前面兩種采用針對一個對象的撤銷數(shù)據(jù),而Flashback Transaction Query則采用了不同尺度來分析撤銷數(shù)據(jù),無論存在多少受某個事物影響的對象,這種方法都會檢索針對這個事物的所有撤銷數(shù)據(jù)。該功能同樣也是基于撤銷數(shù)據(jù)。
4 閃回丟棄(Flashback Drop)
類似于Windows操作系統(tǒng)中的垃圾回收站功能,可以從中恢復(fù)被drop的表或者索引。Flashback Drop功能使用更加靈活簡單,對于誤刪表的操作可以很輕松的找回來。避免了使用數(shù)據(jù)庫備份進(jìn)行恢復(fù)。操作很簡單,不過需要強(qiáng)調(diào)2點,第一,F(xiàn)lashback drop不能恢復(fù)truncate命令,第二,不能恢復(fù)級聯(lián)刪除用戶命令刪除的表。該功能基于撤銷數(shù)據(jù)。
5 閃回數(shù)據(jù)庫(Flashback Database)
如果說Flashback query可用來恢復(fù)指定時間點的記錄,F(xiàn)lashback table可用來恢復(fù)被刪除或指定時間點的表,而Flashback database,則直接提供一個數(shù)據(jù)庫級別的恢復(fù),可將數(shù)據(jù)庫恢復(fù)到指定的時間點,相對于前兩者,其力度是最大的,而且有一個單獨閃回區(qū)域,存儲閃回數(shù)據(jù)。必備的一些條件:A.數(shù)據(jù)庫啟用了flashback database。B.數(shù)據(jù)庫必須打開了flash recovery area,如果數(shù)據(jù)庫是RAC,flash recovery area必須位于共享存儲中。C.數(shù)據(jù)庫必須處于archivelog模式。該特性允許用戶通過Flashback Database語句,使數(shù)據(jù)庫迅速的回滾到以前的某個時間點或者某個SCN(系統(tǒng)更改號)上,而不需要時間點的恢復(fù)操作。閃回數(shù)據(jù)庫不會恢復(fù)物理文件損壞導(dǎo)致的數(shù)據(jù)丟失,這時也只能使用傳統(tǒng)的數(shù)據(jù)庫恢復(fù)辦法恢復(fù)數(shù)據(jù)庫。
6 閃回數(shù)據(jù)歸檔(Flashback data archive)
Oracle 11g則為flashback家族又帶來一個新的成員:Flashback Data Archive。該技術(shù)與以上所說的諸多閃回技術(shù)的實現(xiàn)機(jī)制不同,通過將變化數(shù)據(jù)另外存儲到創(chuàng)建的閃回歸檔區(qū)(Flashback Archive)中,以和undo區(qū)別開來,這樣就可以為閃回歸檔區(qū)單獨設(shè)置存儲策略,使之可以閃回到指定時間之前的舊數(shù)據(jù)而不影響undo策略。并且可以根據(jù)需要指定哪些數(shù)據(jù)庫對象需要保存歷史變化數(shù)據(jù),而不是將數(shù)據(jù)庫中所有對象的變化數(shù)據(jù)都保存下來,這樣可以極大地減少空間需求。這在有審計需要的環(huán)境,或者是安全性特別重要的高可用數(shù)據(jù)庫中,是一個非常好的特性。缺點就是如果該表變化很頻繁,對空間的要求可能很高。
注意,F(xiàn)lashback Data Archive并不是記錄數(shù)據(jù)庫的所有變化,而只是記錄了指定表的數(shù)據(jù)變化。所以,F(xiàn)lashback Data Archive是針對對象的保護(hù),是Flashback Database的有力補(bǔ)充。
閃回策略是針對Oracle撤銷功能的增強(qiáng),為快速恢復(fù)數(shù)據(jù)庫提供了更多的便利。數(shù)據(jù)庫的閃回恢復(fù)的速度要快于RMAN以及基于用戶管理的備份與恢復(fù),其主要原因是因為數(shù)據(jù)庫閃回使用的是閃回日志,而閃回日志中保存的是數(shù)據(jù)塊的完整鏡像。其次閃回能夠恢復(fù)的程度取決于閃回空間的大小以及閃回的保留策略,閃回空間大小會被循環(huán)使用,而閃回的保留策略則決定了閃回日志保留的時間長度。總之,合理的平衡恢復(fù)速度與可用空間依賴于具體服務(wù)要求。通過以上內(nèi)容,可以看出閃回功能使用戶恢復(fù)偶然的錯誤刪除更加容易,增強(qiáng)了系統(tǒng)的可用性與一致性。
參考文獻(xiàn):
[1]賈代平,吳麗娟.Oracle DBA核心技術(shù)解析[M].北京:電子工業(yè)出版社,2006,11.
[2]張曉明.大話Oracle RAC集群、高可用性、備份與恢復(fù)[M].北京:人民郵電出版社,2011,8.
[3]陳吉平.構(gòu)建Oracle高可用環(huán)境[M].北京:電子工業(yè)出版社,2008,1.