如果一個表空間的數(shù)據(jù)文件損壞,在有備份的情況下,那么可以使用數(shù)據(jù)文件的備份進行還原,但是還需要歸檔文件進行恢復,才能使數(shù)據(jù)文件到達一個最新的一致性狀態(tài),從而才能打開數(shù)據(jù)庫。如果需要的歸檔文件無法提供,比如被刪除了,那么在這種情況下如何打開數(shù)據(jù)庫呢?
在這種情況下由于缺少歸檔,數(shù)據(jù)庫無法恢復,但是如果與該表空間相關(guān)的數(shù)據(jù)改變很少或者基本沒有改變的情況下可以通過改變數(shù)據(jù)文件頭的SCN號,讓其和System Checkpoint SCN和Datafile Checkpoint SCN號一致,就可以讓Oracle避開對該文件的檢查,Oracle就不會去做介質(zhì)恢復,而只做實例恢復,這樣就可以實現(xiàn)完全恢復,及時打開數(shù)據(jù)庫。
一般來說,推進數(shù)據(jù)文件頭的SCN號有兩種處理辦法:第一,利用BBED(Block Brower and Editor)修改數(shù)據(jù)文件頭,推進SCN號來打開數(shù)據(jù)庫。第二,設置隱含參數(shù)“_ALLOW_RESETLOGS_CORRUPTION”為TRUE來打開數(shù)據(jù)庫,該參數(shù)默認為FALSE,待數(shù)據(jù)庫打開后,要將該參數(shù)從參數(shù)文件中去掉,命令如下所示:
ALTER SYSTEM SET "_ALLOW_RESETLOGS_CORRUPTION"=TRUE SCOPE=SPFILE;--跳過數(shù)據(jù)庫一致性檢查
ALTER SYSTEM RESET "_ALLOW_RESETLOGS_CORRUPTION" SCOPE=SPFILE SID='*';--取消該參數(shù)