Previous Topic: 还原表空间Next Topic: 故障排除


还原控制文件

如果数据库控制文件已丢失或损坏,您可以通过执行文件级恢复来还原它。文件级恢复成功后,您必须手动恢复控制文件。

请按照下列步骤操作:

  1. 以 root 用户身份登录目标计算机。
  2. 关闭 Oracle 实例。
    SQL>shutdown abort
    
  3. 在未挂接状态中启动数据库。
    SQL>startup nomount
    
  4. 列出所有控制文件的路径。
    SQL> show parameter control_files;
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_files                        string      /opt/oracle/oradata/lynx/control01.ctl, /opt/oracle/flash_recovery_area/lynx/control02.ctl
    
  5. 使用还原向导还原控制文件。有关还原过程的更多信息,请参阅“如何在 Linux 节点上执行文件级恢复”。
  6. 指定关于还原向导的以下信息并提交作业:
    1. 当您选择文件和文件夹时,请输入控制文件的所需名称并搜索。重复该步骤直到所有控制文件都已选中。

      示例:输入“control01.ctl”并搜索。

    2. 在“目标计算机”页面上,提供以下信息:
      • 选择“还原到原始位置”。
      • 输入目标 Oracle 服务器的主机名或 IP 地址。
      • 输入目标 Oracle 服务器的 root 用户名和密码。
      • 为“解决冲突”选项选择“覆盖现有文件”。
  7. 还原所有控制文件后,挂接数据库并打开它。
    $sqlplus / as sysdba
    SQL>alter database mount;
    
  8. 使用 RECOVER 命令恢复数据库,并添加 USING BACKUP CONTROLFILE 子句。
    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
    
  9. 应用提示的存档日志。

    注意:如果缺少所需存档日志,则表示必要的重做记录位于联机重做日志中。它发生的原因是因为在实例失败时,未存档更改位于联机日志中。您可以指定联机重做日志文件的完整路径,然后按 Enter 键(您可能需要尝试好几次,直到找到正确的日志为止)。

    示例:

    SQL> RECOVER DATABASE USING BACKUP CONTROLFILE 
    ORA-00279: change 1035184 generated at 05/27/2014 18:12:49 needed for thread 1
    ORA-00289: suggestion :
    /opt/oracle/flash_recovery_area/LYNX/archivelog/2014_05_27/o1_mf_1_6_%u_.arc
    ORA-00280: change 1035184 for thread 1 is in sequence #6
    Specify log:{<RET>=suggested | filename | AUTO | CANCEL}
    /opt/oracle/oradata/lynx/redo03.log
    Log applied.
    Media recovery complete.
    
  10. 完成恢复过程后,使用 RESETLOGS 子句打开数据库。
    SQL>alter database open resetlogs;
    

控制文件已成功恢复。