操作
数据库原来的控制文件只有一个E:\app\phf\oradata\orcl\CONTROL01.CTL,通过select * from v$control_flies查看,想多增加一个控制文件F:\CONTROL02.CTL。
于是作了以下步骤:
(1)把E:\app\phf\oradata\orcl\CONTROL01.CTL拷一份为F:\CONTROL02.CTL
(2)在数据库中执行:alter system set control_files='E:\app\phf\oradata\orcl\CONTROL01.CTL', 'F:\CONTROL03.CTL' scope=spfile; commit;
(3)重启数据库,出现报错
ORA-00214: ???? ''E:\app\phf\oradata\orcl\CONTROL01.CTL'' ?? 1173 ???
''F:\CONTROL03.CTL'' ?? 1158 ???
原因分析
上面的操作是先创建文件后该的参数,再关闭数据库时,第一个控制文件有所改动了,但此时新加的第二个控制文件还没生效不会同步改动,这样就导致了两个控制文件不一致。再启动数据库时就会报刚才的错了。
正确方案
先改参数再创建增的控制文件
(1)在数据库中执行:alter system set control_files='E:\app\phf\oradata\orcl\CONTROL01.CTL', 'F:\CONTROL03.CTL' scope=spfile; commit;
此时第二个控制文件还没生效,这个文件F:\CONTROL03.CTL在磁盘中现在还没有。
(2)关闭数据库
(2)把E:\app\phf\oradata\orcl\CONTROL01.CTL拷一份为F:\CONTROL02.CTL
(3)启动数据库,一切正常。查看select * from v$control_flies 可以看到有两个控制文件了。