1,如果有以前生成的脚本文件。
1.1 如果online日志文件是好好的,那就不需要resetlogs,用第一套从trace中得到的脚本来重新创建控制文件就好:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10" NORESETLOGS ARCHIVELOG
然后recover database,
alter database open 打开数据库就可
如果最近一次instance crashdown 了,一般服务器也会自动调用日志文件来修复,因为修复crashdown所需要的日志文件都在online redo log中(一般一个current的那个就够了,最多如果还有active的前一组)。这些都是自动的。
1.2 如果online日志文件-尤其是current的那个丢失或者损坏了,而且数据库没有crash down,即正常关机情况下日志文件和控制文件丢了,那用第二套脚本:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10" RESETLOGS ARCHIVELOG
...
RECOVER DATABASE USING BACKUP CONTROLFILE;--->这一步只是模拟而已,要不然为啥下一步要resetlogs啊(模拟不完全恢复啊)
ALTER DATABASE OPEN RESETLOGS;
但是如果此时不巧数据库的状态还是crash down,即丢失了current redo log,而且控制文件也丢了,还有实例crash down了,那正常情况下是无法恢复到启动状态的(除非force open,这个在这里不说了)。常规的做法是仍然用脚本-肯定第二套啦,先创建控制文件,然后用过去的一个备份+归档日志,用不完全恢复的方法,尽可能多的恢复数据到最新的时间。
2,如果只有备份的控制文件。
待续...