做数据库恢复的时候,关于CONTROL FILE的原则是:
1. 如果有当前完好的CONTROL FILE,就使用该CONTROL FILE来进行恢复;
2. 如果当前CONTROL FILE被破坏, 有两种办法来恢复:
   2.1 先尝试用CREATE CONTROLFILE来生成新的CONTROLFILE
   2.2 用USING BACKUP CONTROLFILE选项, 当恢复完成以后,必须用RESETLOGS参数来重新启动数据库.

解决方案 »

  1.   

    接上贴
    如果当前CONTROL FILE被破坏,用USING BACKUP CONTROLFILE做恢复的具体操作步骤:
    1. SHUTDOWN数据库
    2. COPY旧的CONTROLFILE到指定目录,覆盖当前的CONTROLFILE.
    3. STARTUP MOUNT;
    4. OFFLINE所有只读的DATA FILE; ALTER DATABASE DATAFILE '...' OFFLINE;
    5. RECOVER DATABASE USING BACKUP CONTROLFILE;
    6. ALTER DATABASE OPEN RESETLOG;
    7. ONLINE只读DATA FILE.
      

  2.   

    不过,我有点疑问,既然覆盖了,为什么还要用using control file 呢?
      

  3.   

    using control file是指示ORACLE当前的CONTROLFILE是以前的备份文件,LOG_NO不是最新的,如果不加这个参数,ORACLE会检查LOG FILE中的LOG_NO是否和CONTROL FILE相同,然后报错!你就无法完成RECOVER