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