----------------------------------------------------以下是单节点---------------------------------------------------
一、现象
1、某次测试环境数据库重启,报如下错误
ORA-38760: This database instance failed to turn on flashback database
启动到mount状态,无法打开数据库。
二、分析处置
1、关闭flashback
alter database flashback off;
重启无法解决。
2、查看alert日志,发现无法找到还原点文件。
"/home/oracle/flash//flashback/01_mf_9fzqb2fy_.flb"
3、查找网上方法,删除该还原点。
select * from v$restore_point;
结果报如下错误:
ERROR at line 1:
ORA-38701:Flashback database log 1 seq 1 thread 1:
"/home/oracle/flash//flashback/01_mf_9fzqb2fy_.flb"
ORA-27037:unable to obtain file status
Linux Error:2:No such file or directory
Additional information:3
4、因此无法使用删除还原点的方式恢复数据库。
drop restore point XXX;
5、查看文件"/home/oracle/flash//flashback/01_mf_9fzqb2fy_.flb"的确已不存在。
6、关闭数据库的时候使用了shutdown immediate;,因此想到重建控制文件的方式进行恢复。
alter database backup controlfile to trace as '/home/oracle/trace.trc';
shutdown immediate;
startup nomount;
vi /home/oracle/trace.trc
由于redo日志等都在,且是完全关闭数据库。
使用NORESETLOGS 部分进行重建,将resetlogs部分删除。
@/home/oracle/trace.trc
数据库恢复正常。
----------------------------------------------------以下是RAC---------------------------------------------------
1、关闭全面数据库实例
2、起动其中1个节点到mount
3、生成备份的控制文件
alter database backup controlfile to trace as '/home/oracle/trace.trc';
4、修改备份的控制文件,使用resetlogs起动或者noresetlogs。
5、设置cluster_database=false
alter system set cluster_database=FALSE scope=spfile sid=‘*‘;
shutdown abort;
6、起动重建
SQL>startup nomount;
SQL>@/home/oracle/trace.sql
Once the controlfile created and open the database, I have change the parameter to TRUE
SQL> alter system set cluster_database=TRUE scope=spfile sid=‘*‘;
SQL> startup force;