資源描述:
《oracle閃回介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、flashback(閃回)是Oracle10g里新加入的一個(gè)非常有用的一個(gè)feature。通過(guò)flashback的功能,我們可以避開傳統(tǒng)的recover的方式去恢復(fù)一些我們進(jìn)行的誤操作。不過(guò)相當(dāng)recovery來(lái)說(shuō)。這兩個(gè)還是有差別的。1.recovery的恢復(fù)是基于數(shù)據(jù)文件的,先要restore備份好的數(shù)據(jù)文件,flashback是基于flashbacklog文件的,所以基點(diǎn)不一樣,recovery是基于備份的時(shí)間上的,可以恢復(fù)到備份至完整歸檔的任何一個(gè)時(shí)刻,而flashback是基于flashbacklog的,而
2、log的存儲(chǔ)時(shí)效是受限于db_flashback_retention_target這個(gè)參數(shù)的(以分鐘為單位,默認(rèn)1440分鐘,即24小時(shí))。2.recovery的恢復(fù)是應(yīng)用redo記錄的,所以會(huì)對(duì)期間我們不關(guān)心的數(shù)據(jù)也進(jìn)行修補(bǔ),而flashback可以只針對(duì)我們關(guān)心的數(shù)據(jù)進(jìn)行修補(bǔ)。3.recovery的恢復(fù)可以恢復(fù)數(shù)據(jù)文件物理?yè)p壞或者日志物理?yè)p壞,而flashback是基于flashbacklog的,只能處理由于用戶的錯(cuò)誤的邏輯操作,比如刪除了表,刪除了用戶等。由此可見,其實(shí)flashback和recovery的恢復(fù)
3、還是有不少本質(zhì)的差別的,因此我們要針對(duì)著相應(yīng)的情況來(lái)進(jìn)行相應(yīng)的選擇。flashback具體來(lái)說(shuō)有4種常用的操作,這幾種操作雖然都冠以flashback,但是還是有著一些較大的差別,1、flashbackdatabase(閃回?cái)?shù)據(jù)庫(kù))對(duì)應(yīng)flashbackdatabase來(lái)說(shuō),一般用來(lái)處理誤刪除了user或者一些錯(cuò)誤的數(shù)據(jù)操作。要使用flashdatabase的特性。我們一定要啟動(dòng)flashback功能,SQL>alterdatabaseflashbackon;如果要關(guān)閉使用alterdatabaseflashback
4、off;同時(shí)要配置和檢查參數(shù)db_flashback_retention_target,這個(gè)是控制flashbacklog的保留時(shí)間的參數(shù),默認(rèn)是1440分鐘,即24小時(shí)。我們也只能恢復(fù)到這個(gè)時(shí)間之內(nèi)。使用如下SQL>shutdownimmediate;SQL>startupopenexclusive;SQL>flashbackdatabasetotimestampto_date(’2009-05-1300:35:50′,‘yyyy-mm-ddhh24:mi:ss’);或者基于scn號(hào)SQL>flashbackdat
5、abasetoscn5342420;先用readonly模式打開數(shù)據(jù)庫(kù),確定恢復(fù)的正確性,如果不對(duì),調(diào)整時(shí)間或者scn,直到確認(rèn)數(shù)據(jù)恢復(fù)正確。以resetlogs的方式打開數(shù)據(jù)庫(kù),由于flashbacklog和redolog是分開的,所以即使resetlogs,閃回區(qū)的內(nèi)容依然存在,我們一樣能夠能夠閃回到以resetlog打開數(shù)據(jù)庫(kù)點(diǎn)之錢的那個(gè)狀態(tài)上,只有當(dāng)flashback的開關(guān)關(guān)掉以后,閃回區(qū)的內(nèi)容將自動(dòng)刪除。2.flashbackdrop(閃回刪除)用來(lái)恢復(fù)被誤drop掉的表的恢復(fù),這里有一個(gè)我以前錯(cuò)誤理解的一
6、個(gè)地方,其實(shí)這里的flashdrop已經(jīng)脫離了flashbacklog,在10g的版本里,Oracle在表刪除以后,并沒有真的把這個(gè)表刪除,而是對(duì)刪除表做了重命名,并且用recyclebin來(lái)對(duì)其進(jìn)行管理,我們可以通過(guò)user_recyclebin和dba_recyclebin來(lái)進(jìn)行查詢.SQL>select*fromuser_recyclebin或者是select*fromdba_recyclebin;通過(guò)flashbacktabletesttabletobeforedrop.有時(shí)可能一個(gè)表被反復(fù)的建立和drop,
7、這樣在recycle一個(gè)origianlname的有多個(gè)記錄相對(duì),默認(rèn)將是恢復(fù)最后一個(gè),如果要指定恢復(fù)一個(gè)可以用他們的可以通過(guò)指定name的方式3.flashbacktable(閃回表)有時(shí),不小心,對(duì)表進(jìn)行了錯(cuò)誤的update,那么我們就可以通過(guò)這個(gè)feature來(lái)進(jìn)行恢復(fù),比如,我們update…set…where..或者delete了表里不應(yīng)該的數(shù)據(jù),我們可以使用flashbacktabletesttabletotimestampto_date((’2009-05-1300:35:50′,‘yyyy-mm-dd
8、hh24:mi:ss’)),這里要注意和前兩個(gè)不同的,這里是利用undo表做恢復(fù)的基準(zhǔn),所以有關(guān)undo的參數(shù)undo_management和undo_retention對(duì)這個(gè)有影響。具體可以看看這兩個(gè)參數(shù)的說(shuō)明文檔。注,flashbacktable是只能處理DML操作過(guò)后的語(yǔ)句的恢復(fù),如果在期間有DDL語(yǔ)句操作到這個(gè)表上,做flashback