重建控制文件

----------------------------------------------------以下是单节点---------------------------------------------------

一、现象

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;

Oracle数据库控制文件遭到损坏或丢失时,我们需要重建控制文件。下面是重建控制文件的步骤: 1. 首先,我们需要确保数据库处于关闭状态。如果数据库正在运行,我们需要停止所有相关进程,包括实例和监听器。 2. 找到数据库实例的初始化参数文件(通常是spfile或init.ora文件),此文件记录了数据库的配置信息和启动参数。确保备份此文件,以防止意外情况发生。 3. 打开一个编辑器,并创建一个新的SQL脚本文件,例如控制文件重建.sql,用于重建控制文件。 4. 在SQL脚本文件中,编写以下命令: ALTER DATABASE BACKUP CONTROLFILE TO TRACE; 这个命令将生成一个包含重建控制文件所需的语句的跟踪文件。 5. 关闭SQL脚本文件,并将其放置在$ORACLE_HOME/rdbms/admin目录中。 6. 启动数据库实例,但不要打开任何数据库。 7. 使用SQL*Plus以SYSDBA权限登录到数据库。 8. 运行以下命令加载步骤4中生成的跟踪文件: @?/rdbms/admin/控制文件重建.sql 这将执行所需的SQL语句,以重建控制文件。 9. 当脚本执行完成后,检查控制文件是否已经成功重建。你可以通过查询V$CONTROLFILE视图来检查。 10. 确认控制文件的完整性和正确性后,关闭数据库实例。 11. 最后,备份新生成的控制文件,以便将来遇到类似问题时可以快速恢复。 总结起来,重建Oracle控制文件涉及到备份初始化参数文件、创建包含重建语句的SQL脚本、加载脚本以重建控制文件,最后确认重建结果并备份新的控制文件。这些步骤将帮助我们成功重建控制文件,使数据库恢复正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值