欢迎光临
我们一直在努力

Control file 损坏(一)

控制文件:控制文件同时更新,第一个控制文件读写,其他控制文件同步写,任何一个控制文件损坏数据库不能工作

控制文件SCN<datafile SCN

Control file too old

Restore a newer control file

控制文件SCN>datafile SCN

Media recovery required

Recover datafile

 
 

查SCN号

其中v$datafile 从控制文件中获取,v$datafile_header从datafile中获取SCN信息


场景:

所有的控制文件丢失

1、备份到故障时间内数据库结构没有发生变化

备份控制文件:SQL> alter database backup controlfile to trace as ‘/opt/app/oracle/oradata/sqllab/20150515.ctl’;

备份出来的文件实际上是create control file的2个脚本,一个是noresetlogs 做完全恢复(redo信息完整),一个是resetlogs 在redo信息损坏的情况下做不完全恢复。

修改保留一个脚本后运行即可恢复控制文件

SQL> @/opt/app/oracle/oradata/sqllab/20150515.ctl

2、备份后数据库发生过结构变化(新建过tablespacedatafile)

实验设计:1、备份控制文件(二进制)

SQL> alter database backup controlfile to ‘/opt/app/oracle/oradata/backup/20150515.bin’;

2、添加表空间和数据


控制文件已经更新了


3、删除控制文件


4、恢复控制文件


此时还原回来的控制文件没有新建的表空间信息


5、恢复数据库

5.1利用旧的控制文件mount数据库


5.2 尝试open


5.3、recover database


 
 

此时发现需要1_37****的归档日志,但是实际上这个日志还没有生成,信息还在redo信息


指定redo01.log进行恢复,发现datafile 8 出现问题


 
 

此时查询v$datafile信息,数据库对比控制文件(旧)和redo信息发现有不识别的datafile并且将其放入默认的dbs目录,需要将其重命名


SQL> alter database rename file ‘/opt/app/oracle/db/dbs/UNNAMED00008’ to ‘/opt/app/oracle/oradata/sqllab/test002.dbf’;

修改控制文件中的datafile信息


 
 

继续恢复(如果redo01没有信息就到02,一直恢复为止,此时命令可加上一个

SQL> recover database using backup controlfile untile cancel)


恢复完成打开数据库,验证数据恢复成功


 
 

 
 

修改数据库名字

控制文件的信息修改

未经允许不得转载:SRE空间 » Control file 损坏(一)

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

oracle