老榕树社区

标题: 讨论在archivelog方式下恢复datafile和controlfile的问题。 [打印本页]

作者: nedhljww    时间: 2014-9-1 10:06
标题: 讨论在archivelog方式下恢复datafile和controlfile的问题。
是这样的: 我做了个测试,2000/8。1。7 1:db在archivelog 模式下。 数据库为open. 查找v$datafile,看见check_change#为1888, 然后copy 一个datafile比如test01.dbf到d:\\test01.dbf. 这时d:\\test01.dbf的check_change#为1888. 然后, alter system checkpoint, 查找v$datafile,所有数据文件的check_change#为1889. 这时,shutdown immediate; 然后startup mount , alter database rename file \'d:\\oracle\\test01.dbf\' to \'d:\\test01.dbf\' 然后alter database open; 此时,ORACLE报错说 d:\\oracle\\test01.dbf 要recover。 因为controlfile 中的check_change和其他数据文件的check_change#与这个test01.dbf文件的check_change#不同,前者为1889,后者为1888.所以ORACLE需要recover test01.dbf,使之的check_change#成为1889 sqlplus>recover datafile \'d:\\test01.dbf 这时,ORACLE利用archived log 来恢复(自动的)test01.dbf. 总结这种情况是,如果controlfile中的check_change#号大于datafile中的,则你可以直接恢复datafile,再打开DB。(ORACLE会从最小的SCN datafile中开始恢复) 然后再考虑如下情况: db 在archivelog 模式下,DB open. select check_change# from v$datafile 比如结果为1888 然后: sqlplus>alter database backup controlfile to \'d:\\back.ctl\'; sqlplus>alter database checkpoint; select check_change# from v$datafile 结果为1889. sqlplus> archive log list; current log sequnce 727 这时,shutdown immediate; 然后改ini.ora,使它的control_files=(\"d:\\back.ctl" sqlplus>startup mount; sqlplus>alter database open; 因为这时的controlfile中的checkpoint和datafile 中不一致,controfile为1888,datafile为1889,所以需要恢复。 ORACLE提示:需要用resetlogs or noresetlogs打开DB sqlplus> alter database open resetlogs ORACLE提示:要使用backup controlfile sqlplus> reocver database using backup controlfile until cancel; ORACLE提示:找不到 archive_727.arc(意思是需要727的archived log). 问题出来了:我在archivelog mode 下,从老的controlfile中恢复,如果controlfile的checkpoint小于datafile的,那老的controlfile(1888)就不能使用现在的datafile(1889),只能是使用与老的controlfile一起备份的datafile(1888),然后再把checkpoint号利用archived log恢复(前滚)到1889,对吗? 如果是noarchivelog 模式,就不可能恢复到1889了,只能在1888,但是如果是archivelog模式,就可以通过archived log恢复到1889,但是datafile必须是与controlfile一同时间备份的datafile。 以上第一点可以出现在: 如果丢失了一个或多个datafile的情况下的恢复方案 第二点出现在丢失了所有的controlfile的情况下的恢复方案 请前辈们确认我以上观点是否正确。谢谢!!!




欢迎光临 老榕树社区 (http://club.lrswl.com/) Powered by Discuz! X3