1、创建个pfile,关闭数据库
SQL>CREATE PFILE FROM SPFILE;
SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
2、复制第二个control文件到其它目录
$cp /oradata/oracle/oradata/TEST/control02.ctl /oraback/controlbak/control02.ctl
3、vi编辑关闭数据库前创建的PFILE。默认目录在$ORACLE_HOME/dbs/下。PFILE文件为initORACLE_SID.ora。
*.control_files='/oradata/oracle/oradata/TEST/control01.ctl','/oraback/controlbak/control02.ctl','/oradata/oracle/oradata/TEST/control03.ctl'
保存退出;
也可以使用
alter system set controlfiles='/oradata/oracle/oradata/TEST/control01.ctl','/oraback/controlbak/control02.ctl','/oradata/oracle/oradata/TEST/control03.ctl' scope=spfile;
改变初始化参数文件。
4、启动数据库,指定初始化参数文件为initORACLE_SID.ora。(注意:此处若是不指定初始化参数为initORACLE_SID.ora,则启动时会报错,因为10g默认是用spfileORACLE_SID.ora启动数据库。而spfileORACLE_SID.ora里头设置的control02.ctl的位置是在/oradata/oracle/oradata/TEST/目录下。)
startup pfile='/oradata/oracle/product/10.2.0/initORACLE_SID.ora';
5、show parameter control_files;
6、还实验了把3个控制文件都copy到另外一个目录下,同时修改了初始化参数文件,使得控制文件数量达到6个。这样对oracle控制文件的安全给与很大的保证。
具体控制文件数定为多少比较合适,这方面自己还尚未认证。自己有这么个猜想:控制文件数多了固然在安全性上得到很大的提高,可是控制文件数多了,oracle的性能上有没有影响呢?尤其是在对控制文件进行读写操作的时候。这个问题尚待论证。
补充:其实上,controlfiles实际上不需要这么多个,只需2至3个即可。可以把每个控制文件分别存储在不同的硬盘下,这样足矣保证controlfile的安全。多了反而影响数据库的性能。