一.丟失inactive日志文件組的恢復(fù):
因為inactive日志文件組表現(xiàn)已經(jīng)實現(xiàn)了檢討點(diǎn)(dirty數(shù)據(jù)已經(jīng)被寫入數(shù)據(jù)文件)。數(shù)據(jù)庫自身不會產(chǎn)生數(shù)據(jù)庫丟失,如果在這個時候相應(yīng)的redo丟失/破壞,能夠通過clear重建日志文件組恢復(fù)。
通過命令:
alter database clear logfile group n
假如數(shù)據(jù)庫模式是archived的,則需要強(qiáng)制肅清
alter database clear unarchived logfile group n
二.喪失active或current日志文件組的恢復(fù):
丟失情況分兩種:
一個是畸形封閉數(shù)據(jù)庫(如shutdown immediate)
另一個是異樣關(guān)閉數(shù)據(jù)庫(如shutdown abort)
1.在喪失當(dāng)前日志時,數(shù)據(jù)庫是畸形關(guān)閉狀況。
因為shutdown immediate會履行全面的checkpoint,所以當(dāng)前日志在實例恢復(fù)時可以不需要redo
在Oracle8i中咱們完整可以通過alter database clear logfile group n來進(jìn)行恢復(fù).
然而在Oracle9i中,則可能無奈對current的redo日志進(jìn)行clear,需要通過recover database until cancel恢復(fù)后(必需要做的)
用resetlogs選項打開。
比方:
alter database clear logfile group n
recover database until cancel;
alter database open resetlogs;
2.在喪失當(dāng)前日志時,數(shù)據(jù)庫是異樣關(guān)閉的:
這種情況下,因為不在履行全面檢討點(diǎn)時,數(shù)據(jù)庫就已經(jīng)封閉了,那么Oracle在進(jìn)行實例恢復(fù)的時候必需請求當(dāng)前的日志,否則Oracle數(shù)據(jù)庫將無奈openoracle代理.
這樣的情形下Oracle培訓(xùn),咱們通常須要從備份中恢復(fù)數(shù)據(jù)文件,通過利用歸檔日志進(jìn)行向前推演。直到最后一個完好的日志文件,而后能夠通過resetlogs啟動數(shù)據(jù)庫實現(xiàn)恢復(fù)。那么喪失的數(shù)據(jù)則是被破壞的日志文件中的數(shù)據(jù)。
留神:_allow_resetlogs_corruption是Oracle中的一個隱含參數(shù),假如體系切實不能resetlogs方法打開的后只能出此下策,在pfile進(jìn)行相應(yīng)設(shè)置打開數(shù)據(jù)庫。該函數(shù)的含意是,容許在損壞一致性的情形下強(qiáng)迫重置日志Oracle服務(wù),打開數(shù)據(jù)庫。_allow_resetlogs_corruption將應(yīng)用所有數(shù)據(jù)文件最舊的SCN翻開數(shù)據(jù)庫,所以通常來講須要保障SYSTEM表空間領(lǐng)有最舊的SCN。在強(qiáng)迫翻開數(shù)據(jù)庫之后,可能由于各種起因會有ora-600