要避免控制文件的单点故障所带来的损失,我们强烈建议您对控制文件进行多元备份,即在不同的物理磁盘上存储一个副本。最多可以对控制文件进行八次多元备份。
ctrl01.ctl和ctrl02.ctl等等分别放在不同的物理磁盘上面,就称为多元备份。因为每个控制文件中的内容是一模一样的,只要其中有一个控制文件可用就可以保证数据正常启动。
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
01/app/oracle/oradata/orcl/con
trol03.ctl
SQL> alter system set control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl',
2 '/u01/app/oracle/oradata/orcl/control03.ctl','/u01/app/oracle/flash_recovery_area/ORCL/contfiles/control04.ctl' scope=spfile;
系统已更改。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> !cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/flash_recovery_area/ORCL/contfiles/control04.ctl
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1266392 bytes
Variable Size 113249576 bytes
Database Buffers 50331648 bytes
Redo Buffers 2924544 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter control_f
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/app/oracle/oradata/orcl/c
ontrol01.ctl, /u01/app/oracle/
oradata/orcl/control02.ctl, /u
01/app/oracle/oradata/orcl/con
trol03.ctl, /u01/app/oracle/fl
ash_recovery_area/ORCL/contfil
es/control04.ctl
--查看控制文件存放路径:
SQL> select name from v$controlfile; NAME ------------------------------------------------------------------ /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control02.ctl /u01/app/oracle/oradata/orcl/control03.ctl /u01/app/oracle/flash_recovery_area/ORCL/contfiles/control04.ctl