Oracle 控制文件
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中的不一致,
这将是一个很严重的问题!!!