共計 1814 個字符,預(yù)計需要花費(fèi) 5 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“數(shù)據(jù)庫中完全恢復(fù)與不完全恢復(fù)概念是什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
完全恢復(fù):利用重做日志或增量備份將數(shù)據(jù)塊恢復(fù)到最接近當(dāng)前時間的時間點(diǎn)。之所以叫做完整恢復(fù)是由于 Oracle 應(yīng)用了歸檔日志和聯(lián)機(jī)重做日志中所有的修改。
不完全恢復(fù):利用備份產(chǎn)生一個非當(dāng)前版本的數(shù)據(jù)庫。換句話說,恢復(fù)過程中不會應(yīng)用備份產(chǎn)生后生成的所有的重做日志。
通常在下列情況下生成整個數(shù)據(jù)庫的不完整恢復(fù)
● 介質(zhì)失敗損壞了幾個或全部的聯(lián)機(jī)重做日志文件;
● 用戶操作造成的數(shù)據(jù)丟失,比如,用戶誤刪除了一張表;
● 由于個別歸檔日志文件的丟失無法進(jìn)行完整的恢復(fù);
● 丟失了當(dāng)前的控制文件,必須使用備份的控制文件打開數(shù)據(jù)庫。
為了執(zhí)行不完整介質(zhì)恢復(fù),必須使用恢復(fù)時間點(diǎn)以前的備份來還原數(shù)據(jù)文件,并在恢復(fù)完成后使用 RESETLOG 選項(xiàng)打開數(shù)據(jù)庫。
resetlogs 參數(shù)
在不完全恢復(fù)期間,通常需要使用 resetlogs 命令打開數(shù)據(jù)庫,這是因?yàn)槲覀円獜囊呀?jīng)建立的現(xiàn)有重做日志流中脫離出來。resetlogs 參數(shù)表示一個數(shù)據(jù)庫邏輯生存期的結(jié)束了另一個數(shù)據(jù)庫邏輯生存期的開始。數(shù)據(jù)庫的邏輯生存期也稱為一個對應(yīng)物(incarnation)。每次使用 resetlogs 命令時,SCN 計數(shù)器不會被重置,但是 Oracle 會重置其他計數(shù)器(如日志序列號),同時還會重置聯(lián)機(jī)重做日志的內(nèi)容。
經(jīng)過測試,當(dāng)在非歸檔模式下嘗試執(zhí)行完全恢復(fù)時,發(fā)出 alter database open 后,RMAN 會報如下錯誤:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
但是如果加上 resetlogs,就不會報錯了。而且從恢復(fù)的過程來看,期間確實(shí)使用在聯(lián)機(jī)日志文檔,也就是說它執(zhí)行的是完全恢復(fù)。這說明在非歸檔模式下執(zhí)行完全恢復(fù)后,打開數(shù)據(jù)庫時也要重置重做日志。其實(shí)這也很好想,非歸檔模式下,沒有歸檔的重作日志,完全恢復(fù)時使用聯(lián)機(jī)日志后,這些聯(lián)機(jī)日志文件就沒什么用了,因此 Oracle 就重置日志文件序列號(個人覺得:理論上來說,是可以不重置的,日志文件的序號直接在現(xiàn)有的日志序號上增加,但是這樣日志序號會越來越大。Oracle 應(yīng)該是考慮到這一點(diǎn)就在非歸檔模式下執(zhí)行完全恢復(fù)和不完全恢復(fù)時都重置了重做日志)。
完全恢復(fù)
完全恢復(fù)很簡單,不多說,如下:
$ rman target / ## 登錄 rman 工具,如果使用了 catalog,則登陸方法 rman targetsys/Oracle@lscatalogcata/cata@leo
RMAN startup mount ## 必須為 mount 狀態(tài),才能 restore 和 recover 數(shù)據(jù)庫
RMAN restore database; ## 復(fù)制舊數(shù)據(jù)文件覆蓋損壞的數(shù)據(jù)文件
RMAN recover database; ## 數(shù)據(jù)文件頭 SCN 號同步當(dāng)前日志中最后一個 SCN 號【完全恢復(fù)】
RMAN alter database open [resetlogs];
不完全恢復(fù)
不完全恢復(fù)有一個核心要領(lǐng)需要牢記:不完全恢復(fù)影響的是整個數(shù)據(jù)庫,不能只對數(shù)據(jù)庫的一部分執(zhí)行不完全恢復(fù)。不完全恢復(fù)使用的方法通常有:基于時間、SCN、日志序列、還原點(diǎn)或基于刪除的恢復(fù)。
$ rman target /
RMAN startup mount
RMAN run
2 {
3 set until time to_date(07/01/2015 15:00:00 , mm/dd/yyyy hh34:mi:ss)
4 restore database;
5 recover database;
6 alter database open;
7 }
從執(zhí)行過程來看,不完全恢復(fù)就是加了一個限制條件,時間 /SCN 等。如上基于時間點(diǎn)的恢復(fù),Oracle 會查找目標(biāo)恢復(fù)時間之前并與恢復(fù)時間最近的備份集。如果沒有找到可用的備份集,就會報錯。
“數(shù)據(jù)庫中完全恢復(fù)與不完全恢復(fù)概念是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!