日期:2014-05-16  浏览次数:20483 次

控制文件丢失恢复测试
控制文件(controlfile)丢失恢复
基于控制文件的复合多路径性,它的丢失分为两种,一种是其中某个控制文件的损坏或丢失,另外一种是所有控制文件均丢失。基于第一种情况,只需把好的控制文件复制一份在损坏或丢失的那个控制文件路径下即可。第二种情况下则需要通过备份信息来对控制文件进行恢复或手工重建控制文件。
  • 丢失单一控制文件的判断及恢复
/u01/app/oracle/oradata/test0924/control01.ctl
 
数据库无法正常关闭,因为在关闭的时候必须向控制文件中更新scn号
 
sys@TEST0924> shutdown immediate;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/test0924/control01.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
 
必须强制关闭数据库
 
sys@TEST0924> shutdown abort;
ORACLE instance shut down.
 
1、启动数据库报控制文件验证失败,检查告警日志文件。
sys@TEST0924> startup
ORACLE instance started.
Total System Global Area 3340451840 bytes
Fixed Size 2232960 bytes
Variable Size 1543507328 bytes
Database Buffers 1778384896 bytes
Redo Buffers 16326656 bytes
ORA-00205: error in identifying control file, check alert log for more info
 
2、查看告警日志,报提示找不到control01.ctl
 
ri Oct 11 22:39:57 2013
ALTER DATABASE MOUNT
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/test0924/control01.ctl'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-205 signalled during: ALTER DATABASE MOUNT...
 
3、从上面的信息我们可以得出是由于控制文件丢失导致了数据库无法正常的启动和关闭,下面我们要做的就是对控制文件进行做恢复,因为我们知道控制文件具有重复多路径属性,11g默认会有两个控制文件。现在日志中看到的是控制文件1丢失,找不到,我们可以通过控制文件2来恢复1。
 
基于正常控制文件恢复损坏的控制文件
 
1、查看控制文件存在路径
sys@TEST0924> show parameter control_file
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
/u01/app/oracle/oradata/test09
24/control01.ctl, /u01/app/ora
cle/fast_recovery_area/test092
4/control02.ctl
 
我们可以从如上看到,该套数据库存在2个控制文件其中一个控制文件存放在
 
/u01/app/oracle/oradata/test0924/control01.ctl,另外1个控制文件存在/u01/app/oracle/fast_recovery_area/test0924/control02.ctl
 
,从上面刚才的信息中我们可以得之是control01.ctl控制文件丢失导致数据库故障。
 
2、检查下控制文件是不存在还是损坏了
[oracle@rtest test0924]$ ls /u01/app/oracle/oradata/test0924/
example01.dbf fla_tbs02.dbf redo01.log redo03.log sysaux01.dbf temp01.dbf undotbs02.dbf
fla_tbs01.dbf inventory01.dbf redo02.log rman_cbt.log system01.dbf undotbs01.dbf users01.dbf
[oracle@rtest test0924]$ ls /u01/app/oracle/oradata/test0924/control01.ctl
ls: /u01/app/oracle/oradata/test0924/control01.ctl: No such file or directory
 
看看控制文件2是否存在。
 
[oracle@rtest test0924]$ ls /u01/app/oracle/fast_recovery_area/te