别想万里,要把一只脚放到另一脚的前边
分类: LINUX
2013-07-26 16:54:15
Oracle 控制文件呢,是数据库中最小的文件,是一个二进制文件,其中包括了数据库的结构信息,
同时也包括了数据文件和日志文件的一些信息,控制文件虽小,但可以说是 Oracle 中最重要的文件,
只有 Oracle 进程才能够更新控制文件中的内容,
控制文件中呢主要包括数据库名称,位置,联机或者脱机状态,Redo Log File 的位置和名称,
表空间名称, Archive Log File 信息,CheckPoint 信息,Undo 信息,RMAN 信息等等,
从上面对控制文件中包含的内容也可以看出控制文件在整个 Oracle 中的重要性。
控制文件的多路复用技术
何为控制文件的多路复用技术呢?
由于控制文件的重要性,Oracle 呢官方是建议至少应该拥有控制文件的三个以上的副本,
而您可以通过多路复用技术,将控制文件的副本创建到不同的磁盘上,
然后再修改初始化参数文件 init . ora
(现在的 Oracle 版本中的参数基本上都是使用二进制的 spfile,只有个老版本的 Oracle 才使用 init.ora 文件)
中的 control_files 参数,使之包含所有的控制文件,
也就是将其他磁盘上的控制文件也包含到这个 control_files 中,这样的话,
这样呢,有一个好处,
就是你的这个一个磁盘坏了,Oracle 仍然能够快速的恢复,
一个控制文件损坏了,还可以自动使用另一个控制文件,
但是这里要提一点的是,控制文件并不是越多越好的,
因为当 Oracle 更新控制文件时,会将所有的控制文件全部进行更新,自然性能就有一定的影响了,
所以,
控制文件的副本也不是越多越好的!!!
下面呢就介绍一下如何启用多路复用的技术了,
主要是针对于使用 spfile (System Parameter File)实现多路复用控制文件,
(对于 init . ora 实质上也差不多)
首先来查看一下当前使用的控制文件
上面的截图中可以看出当前的 Oracle 实例上有三个控制文件,
也就是由三路复用吧(乱取的),
下面呢,我还加一个控制文件,并且把控制文件移到其他的目录(以其他的目录来虚拟一个磁盘)
第一步呢,修改 spfile 中的 control_files 这个属性,为其增加两个控制文件信息,
一个存放于虚拟磁盘 disk1 下,一个存放于虚拟磁盘 disk2 下
下面呢就是要关闭数据库了,至于为什么要关闭数据库,在后面有说明的,
下面呢,就是 Ctl + C 了,也就是把控制文件复制到指定的目录上,
上面指定的是 disk1 和 disk2 ,所以在这里呢,就是简单的 Ctl + C 操作了
完成了之后呢,就重新启动 Oracle 了
下面呢,就再使用 v$controlfile 来验证上面的操作是否成功了,
从上面呢,就可以看出操作确实是成功了!!!
现在来解释为什么需要关闭 Oracle ?
因为考虑到如果您的 Oracle 是在线使用的话,
那么这个 Oracle 上有可能还挂着很多的用户或者是应用程序,
这些用户的操作有可能是会改变控制文件的,如果您不关闭 Oracle 就拷贝控制文件,
那么将会造成控制文件不一致的情况,即控制文件1中的数据内容和控制文件2中的不一致,
这将是一个很严重的问题!!!