Oracle 控制文件

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 实质上也差不多)

首先来查看一下当前使用的控制文件

image

上面的截图中可以看出当前的 Oracle 实例上有三个控制文件,

也就是由三路复用吧(乱取的),

下面呢,我还加一个控制文件,并且把控制文件移到其他的目录(以其他的目录来虚拟一个磁盘)

第一步呢,修改 spfile 中的 control_files 这个属性,为其增加两个控制文件信息,

一个存放于虚拟磁盘 disk1 下,一个存放于虚拟磁盘 disk2 下

image

下面呢就是要关闭数据库了,至于为什么要关闭数据库,在后面有说明的,

image

下面呢,就是 Ctl + C 了,也就是把控制文件复制到指定的目录上,

上面指定的是 disk1 和 disk2 ,所以在这里呢,就是简单的 Ctl + C 操作了

image

image

完成了之后呢,就重新启动 Oracle 了

image

下面呢,就再使用 v$controlfile 来验证上面的操作是否成功了,

image

从上面呢,就可以看出操作确实是成功了!!!

现在来解释为什么需要关闭 Oracle ?

因为考虑到如果您的 Oracle 是在线使用的话,

那么这个 Oracle 上有可能还挂着很多的用户或者是应用程序,

这些用户的操作有可能是会改变控制文件的,如果您不关闭 Oracle 就拷贝控制文件,

那么将会造成控制文件不一致的情况,即控制文件1中的数据内容和控制文件2中的不一致,

这将是一个很严重的问题!!!

posted @ 2012-06-14 14:33  VipSoft  阅读(217)  评论(0编辑  收藏  举报