控制文件测试
多路复用控制文件:
1.查看此时数据库的控制文件情况
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
2.模拟控制文件损坏,mv掉控制文件01
[root@orcl orcl]# mv control01.ctl control01
3.重启数据库
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 763363328 bytes
Fixed Size 8797440 bytes
Variable Size 570426112 bytes
Database Buffers 176160768 bytes
Redo Buffers 7979008 bytes
ORA-00205: error in identifying control file, check alert log for more info
4.重新覆盖控制文件
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
fast_recovery_area/orcl/contro
l02.ctl
复制另一个控制文件到control01.ctl
[oracle@ orcl]# cp control02.ctl /u01/app/oracle/oradata/orcl/control01.ctl
5.启动数据库
SQL> startup
ORACLE instance started.
Total System Global Area 763363328 bytes
Fixed Size 8797440 bytes
Variable Size 570426112 bytes
Database Buffers 176160768 bytes
Redo Buffers 7979008 bytes
ORA-00214: control file '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
version 3251 inconsistent with file
'/u01/app/oracle/oradata/orcl/control01.ctl' version 3225
此时控制文件02的version3251要新与01的version3225,中间做了操作,导致控制文件02版本是更新的,所以重新复制02到01控制文件
6.再次覆盖控制文件
[oracle@orcl ~]$ ! cp /u01/app/oracle/fast_recovery_area/orcl/control02.ctl /u01/app/oracle/oradata/orcl/control01.ctl
7.重启数据库
SQL> shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 763363328 bytes
Fixed Size 8797440 bytes
Variable Size 570426112 bytes
Database Buffers 176160768 bytes
Redo Buffers 7979008 bytes
Database mounted.
Database opened.
******************************************************************************************************************************************
查看数据库有几个控制文件,将所有的控制文件都模拟损坏
1.移走所有的控制文件
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
fast_recovery_area/orcl/contro
l02.ctl
[root@orcl orcl]# mv control01.ctl /tmp
[root@orcl orcl]# mv control02.ctl /tmp
2.重启数据库测试
SQL> shutdown immediate
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control01.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 763363328 bytes
Fixed Size 8797440 bytes
Variable Size 570426112 bytes
Database Buffers 176160768 bytes
Redo Buffers 7979008 bytes
ORA-00205: error in identifying control file, check alert log for more info
3.现在所有的控制文件都已经被损坏,首先查看rman是否开启自动备份,然后通过自动备份恢复
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
4.启动到nomount
RMAN> shutdown immediate
RMAN> startup nomount
5.还原自动备份的控制文件
RMAN> restore controlfile from autobackup;
RMAN> alter database mount;
RMAN> recover database;
RMAN> alter database open resetlogs;