遭遇ORA-01152: file 1 was not restored from a sufficiently old backup

xueji03發表於2008-07-25
在一次恢復過程中,restore過後,在open時遇到報錯:
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/../../raw12'[@more@]

造成這種報錯的大部分原因是因為controlfile裡所記錄的scn與datafile裡的scn不一致。比如從備份裡restore出的controlfile上的scn < datafile上所記錄的scn,因此理論上二種思路:
1、以old controlfile為準的,datafile上的scn是新的,這樣存在著資料的不一致,要繼續恢復下去,將datafile上的scn也要restore到與controlfile一致的情況,但這樣會丟失datafile上的資料。
2、就是以datafile上的scn為基準,將controlfile恢復到與datafile scn一致。

於是,在restore過後如果遭遇到ORA-01152之類的問題,可以這樣來操作(實際上就是上面第二種思路的實現):

RMAN>RECOVER DATABASE; ---找出同步controlfile scn和datafile scn所需的archivelog,如果歸檔目錄缺少所列出log就從備份裡(比如說是在磁帶裡)取出來並放回歸檔目錄,比如說所列的archivelog是1_215.dbf - 1_230.dbf。

然後進行時間點的資料恢復(大於之前所需archivelog中的最後一個archivelog即可)
RMAN>run{
allocate channel d1 type disk;
allocate channel d2 type disk;
set until sequence 231 thread 1; --注意這裡指定為1_231,大於之前的1_230
recover database;
release channel d1;
release channel d2;
}
這樣就恢復出一致性的資料,然後用open resetlogs開啟資料即可,但記得resetlogs後應該全備一次當前資料庫。當然,如果不願意用resetlogs後,重建controlfile後,用noresetlogs也是ok的。
此方法同樣適合於RAC資料庫的恢復測試時遇到的ORA-01152錯誤。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14517718/viewspace-1007797/,如需轉載,請註明出處,否則將追究法律責任。

相關文章