概述
当你在数据库运行时误删除了控制文件怎么办?很不幸有一次我就有这个情况,虽然是测试环境,这里因为我有事先把控制文件分别备份,所以恢复还是比较简单的。下面简单记录下怎么恢复。
![fcece867f3ad107a0f4284fa183a441c.png](https://img-blog.csdnimg.cn/img_convert/fcece867f3ad107a0f4284fa183a441c.png)
问题
控制文件版本不一致一般是因为在实例运行时删除了控制文件,此时直接复制了其他控制文件过来,但数据库读写时实际上只写入一个控制文件,并没有写入复制过来的控制文件。这种情况会造成控制文件版本不一致。
![41b11af43e3dd064d7a1297de2d69d4f.png](https://img-blog.csdnimg.cn/img_convert/41b11af43e3dd064d7a1297de2d69d4f.png)
解决过程:
1、关闭实例
SQL> shutdown abort
ORACLE instance shut down.
2、修改控制文件(oracle用户执行)
rm -rf /u01/app/oracle/oradata/orcl/control01.ctl
cp /u01/app/oracle/fast_recovery_area/orcl/control02.ctl /u01/app/oracle/oradata/orcl/control01.ctl
3、重启数据库
![641ef0cf3ac8362d39ef67952316db2d.png](https://img-blog.csdnimg.cn/img_convert/641ef0cf3ac8362d39ef67952316db2d.png)
上面简单的记录了控制文件恢复过程,实际上也说明了控制文件多个地方备份的重要性,虽然可以重建控制文件来恢复,但是毕竟麻烦很多。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
![278545986e1b9affdef88fbd09186dcf.gif](https://img-blog.csdnimg.cn/img_convert/278545986e1b9affdef88fbd09186dcf.gif)