还原控制文件
如果数据库控制文件已丢失或损坏,您可以通过执行文件级恢复来还原它。文件级恢复成功后,您必须手动恢复控制文件。
请按下列步骤操作:
- 以 root 用户身份登录目标计算机。
- 关闭 Oracle 实例。
SQL>shutdown abort
- 在未挂接状态中启动数据库。
SQL>startup nomount
- 列出所有控制文件的路径。
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
- 使用还原向导还原控制文件。有关还原过程的更多信息,请参阅“如何在 Linux 节点上执行文件级恢复”。
- 指定关于还原向导的以下信息并提交作业:
- 当您选择文件和文件夹时,请输入控制文件的所需名称并搜索。重复该步骤直到所有控制文件都已选中。
示例:输入“control01.ctl”并搜索。
- 在“目标计算机”页面上,提供以下信息:
- 选择“还原到原始位置”。
- 输入目标 Oracle 服务器的主机名或 IP 地址。
- 输入目标 Oracle 服务器的 root 用户名和密码。
- 为“解决冲突”选项选择“覆盖现有文件”。
- 当您选择文件和文件夹时,请输入控制文件的所需名称并搜索。重复该步骤直到所有控制文件都已选中。
- 还原所有控制文件后,挂接数据库并打开它。
$sqlplus / as sysdba
SQL>alter database mount;
- 使用 RECOVER 命令恢复数据库,并添加 USING BACKUP CONTROLFILE 子句。
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
- 应用提示的存档日志。
注意:如果缺少所需存档日志,则表示必要的重做记录位于联机重做日志中。它发生的原因是因为在实例失败时,未存档更改位于联机日志中。您可以指定联机重做日志文件的完整路径,然后按 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.
- 完成恢复过程后,使用 RESETLOGS 子句打开数据库。
SQL> alter database open resetlogs;
控制文件已成功恢复。