在Windows操作系统中,如果注册表文件被损坏了,就会影响操作系统的稳定性。严重的话,会导致操作系统无法正常启动。而控制文件对于Oracle数据库来说,其作用就好象是注册表一样的重要。如果控制文件出现了意外的损坏,那么此时Oracle数据库系统很可能无法正常启动。为此作为Oracle数据库管理员,务必要保证控制文件的安全。
在实际工作中,数据库管理员可以通过备份控制文件来提高控制文件的安全性。但是笔者认为这是下下之策。因为当控制文件出现损坏时,通过备份文件来恢复的话,会出现数据库在一段时间内的停机。为此笔者建议各位数据库管理员最好还是采用多路复用来保障控制文件的安全。在采用多路复用的情况下,当某个控制文件出现损坏时,系统会自动启用另外一个没有问题的控制文件来启动数据库。所以说不会出现停机的状况。
一、控制文件多路复用的特点。
多路复用的原理其实很简单,就是在数据库服务器上将控制文件存放在多个磁盘分区或者多块硬盘上。数据库系统在需要更新控制文件的时候,就会自动同时更新多个控制文件。如此的话,当其中一个控制文件出现损坏时,系统会自动启用另外的控制文件。只有当数据库管理员运气比较背的时候,即所有控制文件都出现损坏,此时数据库就无法正常启动了。不过只要将控制文件多路复用在多块硬盘上,一般来说控制文件一起损坏的纪律很小。所以采用多路复用控制文件可以在很大程度上提高控制文件的安全性。最重要的是,在控制文件转换的过程之中,不会有停机现象的产生。
所以通过把控制文件存放在不同的硬盘上,数据库管理员就能够避免数据库出现单点故障的风险。当采用多路复用技术启用多个控制文件时,数据库在更新控制文件时会同时更新这些控制文件。虽然有时候这可能会让数据库对控制文件的修改花费更多的时间,但是相对于风险来说,这点时间上的投资还是值得的。再说只要硬盘的性能比较好,那么这个时间的影响是很少的,甚至可以忽略不计。不过在采用多路复用的时候,最好不要将控制文件防止在网络上的服务器中。有时候如果系统在更新控制文件时刚好碰到网络性能不好甚至网络中断的情况下,那么这个控制文件的更新就需要耗用比较长的时间。如在Windows操作系统下安装Oracle数据库的话,其默认情况下就启用了多路复用技术。不过这个多路复用技术不怎么合理。其将其余的两个控制文件副本保存在同一个分区的同一个目录下。万一这台服务器的硬盘出现了故障,由于控制文件保存在同一个硬盘中,为此多路复用就失去了意义。为此最好将控制文件保存在不同的硬盘中,以提高控制文件的安全性。
二、在Windows平台上如何实现控制文件多路复用。
如下图所示,就是笔者采用了多路复用后的结果。
本来Oracle数据库有三个控制文件,分别保存在同一目录中。笔者现在在另一个硬盘分区上放置了一个控制文件,实现了多路复用。如此的话,即使前面两个控制文件损坏了,那么数据库也会立即启用第三个控制文件来启动数据库。在Windows操作系统下要实现多路复用控制文件是比较简单的,只需要通过几个简单的步骤就可以完成。
第一步:修改系统参数control_files。在Oracle数据库系统中,是通过这个初始化参数来打开控制文件的。即这个初始化参数中指定有多少个控制文件,分别存放在那里,到时候数据库就会更新多少控制文件。不过需要注意的是,一般数据库在使用时,只打开一个控制文件。所以要启用多路复用时,首先需要使用ALTER SYSTEM命令来设置这个初始化参数,以便在管理员指定的位置添加控制文件。其具体格式为ALTER SYSTEM control_files ‘控制文件1’,’控制文件2’。需要注意的是,这里的控制文件都需要使用绝对路径。
第二步:关闭数据库以及相关服务。这个初始化参数设置以后,还需要关闭数据库以及相关服务后才能够进行下一步的操作。所以最好在数据库投入生产使用之前,就做好控制文件多路复用的准备。否则后续再进行调整的话,就不得不付出数据库停机的代价。使用shutdown命令关闭数据库之后,还需要在操作系统的服务管理窗口中关闭相关的服务。