ORA-01189: file is from a different RESETLOGS than previous files
ORA-01190: controlfile or data file string is from before the last RESETLOGS
dba在将整个数据库dd拷贝过来后,重建控制文件时,将3号文件给漏掉了,然后又open resetlogs打开数据库了。
alter database rename file '/opt/oracle/product/9.2.0.4/dbs/MISSING00003' to '/opt/oracle/oradata/test/indx01.dbf';
于是想将该 文件online起来或者做recover datafile 3时报出上面的错误。
我想oracle判断这个文件是不是resetlogs之前的文件,肯定是数据文件头有个标志的。
于是alter session set events 'immediate trace name file_hdrs level 10';
经过反复的比较发现
丢失的文件与正常的文件有两处地方明显不同
1.reset logs count:0x23b67b69 scn: 0x07b6.173f7a71
2.Checkpointed at scn: 0x0000.00016a3a
于是,我用BBED.修改这两个地方.
resetlogs 修改的分别是offset 110,114,118
checkpoint 修改的分别是offset 138
修改后用
sum file 3 block 1 apply
来重新生新checksum,否则会报坏块
然后重新运行recover datafile 3;
alter database datafile 3 online
即可
经过几天的试验终于成功了.
其实遇到这样的问题时,主要围绕着SCN,仔细分析数据文件头,找出不同的地方,尝试一下去修改.当然,这种方法只有万不得已才使用,死马当活马医
做好备份才是最好的方法
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12482/viewspace-863133/ ,如需转载,请注明出处,否则将追究法律责任。