oracle控制文件的一点研究

        控制文件是非常重要的文件,实例读取控制文件才能到mount状态。DBA的一个原则就是多路控制文件,今天我就做了个实验,学习了一下这个。

      代码如下:

alter system set control_files='D:\app\wings\oradata\testdb\CONTROL03.CTL','D:\app\wings\oradata\testdb\CONTROL04.CTL' scope=spfile;
--查看一下
select value from v$spparameter where name = 'control_files'; 

       这个时候就会看到两条数据了。

       然后正常的关掉数据库:

        

shutdown immediate;
       之后复制一份控制文件,改成上面的名字。启动数据库,再查看控制文件:

        

sho parameter control_files;
       这时看到的就是两个控制文件了。

       刚才犯了一个很白痴的错误,不妨写出来,让大家也笑一个。

       step1 

alter system set control_files='D:\app\wings\oradata\testdb\CONTROL04.CTL' scope=spfile;
       这样就更改了系统,启动的话会以04这个文件启动。

       之后我关掉了数据库,复制了03这个文件,命名为04,启动数据库一切正常。之后我很2的做了下一步:

       step 2

alter system set control_files='D:\app\wings\oradata\testdb\CONTROL03.CTL','D:\app\wings\oradata\testdb\CONTROL04.CTL' scope=spfile;
       之后重启数据库,很不幸的报错了:ora-01219。也没有任何说明,后来百度了一下,这个错误说的是我只能查特定的视图和表。在EM上看了一下,我的数据库处于nomount,也就是说我的控制文件在加载的时候出了问题。处理方案也很简单:

        

alter system set control_files='D:\app\wings\oradata\testdb\CONTROL04.CTL' scope=spfile;
       然后重启一下就可以了。

       当时我百思不得其解,为什么呢?后来,我做了这么一步,我又执行了一下step1,不过是把控制文件换成了03。重启,之后报错,提示我控制文件旧。这个时候我就顿悟了。我忽略了很重要的一点,那就是控制文件在数据库启动之后在不停的被更新着,03这个文件在几分钟没有被加载的时间里已经旧了。希望大家不要犯我这个低级错误。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值