一、控制文件多路复用的特点
多路复用的原理其实很简单,就是在数据库服务器上将控制文件存放在多个磁盘分区或者多块硬盘上。数据库系统在需要更新控制文件的时候,就会自动同时更新多个控制文件。如此的话,当其中一个控制文件出现损坏时,系统会自动启用另外的控制文件。只有当数据库管理员运气比较背的时候,即所有控制文件都出现损坏,此时数据库就无法正常启动了。不过只要将控制文件多路复用在多块硬盘上,一般来说控制文件一起损坏的纪律很小。所以采用多路复用控制文件可以在很大程度上提高控制文件的安全性。最重要的是,在控制文件转换的过程之中,不会有停机现象的产生。所以通过把控制文件存放在不同的硬盘上,数据库管理员就能够避免数据库出现单点故障的风险。当采用多路复用技术启用多个控制文件时,数据库在更新控制文件时会同时更新这些控制文件。虽然有时候这可能会让数据库对控制文件的修改花费更多的时间,但是相对于风险来说,这点时间上的投资还是值得的。再说只要硬盘的性能比较好,那么这个时间的影响是很少的,甚至可以忽略不计。不过在采用多路复用的时候,***不要将控制文件防止在网络上的服务器中。有时候如果系统在更新控制文件时刚好碰到网络性能不好甚至网络中断的情况下,那么这个控制文件的更新就需要耗用比较长的时间。
如在Windows操作系统下安装Oracle数据库的话,其默认情况下就启用了多路复用技术。不过这个多路复用技术不怎么合理。其将其余的两个控制文件副本保存在同一个分区的同一个目录下。万一这台服务器的硬盘出现了故障,由于控制文件保存在同一个硬盘中,为此多路复用就失去了意义。为此***将控制文件保存在不同的硬盘中,以提高控制文件的安全性。
二、在Windows平台上如何实现控制文件多路复用
本来Oracle数据库有三个控制文件,分别保存在同一目录中。笔者现在在另一个硬盘分区上放置了一个控制文件,实现了多路复用。如此的话,即使前面两个控制文件损坏了,那么数据库也会立即启用第三个控制文件来启动数据库。在Windows操作系统下要实现多路复用控制文件是比较简单的,只需要通过几个简单的步骤就可以完成。
***步:修改系统参数control_files。在Oracle数据库系统中,是通过这个初始化参数来打开控制文件的。即这个初始化参数中指定有多少个控制文件,分别存放在那里,到时候数据库就会更新多少控制文件。不过需要注意的是,一般数据库在使用时,只打开一个控制文件。所以要启用多路复用时,首先需要使用ALTERSYSTEM命令来设置这个初始化参数,以便在管理员指定的位置添加控制文件。其具体格式为ALTERSYSTEMcontrol_files "控制文件1","控制文件2"。需要注意的是,这里的控制文件都需要使用绝对路径。
第二步:关闭数据库以及相关服务。这个初始化参数设置以后,还需要关闭数据库以及相关服务后才能够进行下一步的操作。所以***在数据库投入生产使用之前,就做好控制文件多路复用的准备。否则后续再进行调整的话,就不得不付出数据库停机的代价。使用shutdown命令关闭数据库之后,还需要在操作系统的服务管理窗口中关闭相关的服务。
第三步:复制控制文件并改名。为了确保所有控制文件能够互为镜像,完全相同,***能够在关闭数据库的情况下,将原先的控制文件复制到一个新的位置,然后进行重命名。注意这里的位置与控制文件的名字,必须同***步指定的路径与名字相同。
第四步:重新启动数据库与相关的服务。启动数据库之后,需要注意手工启动服务窗口中的相关选项。如果怕麻烦的话,那么重新启动一下操作系统,系统会在重新启动的过程中自动启用相关的Oracle数据库服务。数据库重新启动之后,多路复用的控制文件就可以使用了。如果要确认一下原先的设置是否奏效,可以使用上图所示的查询语句来进行查询。当使用ALTERSYSTEM参数更改完初始化参数之后,由于这个控制文件实际上还并不存在,为此利用这个语句来查询的时候就查不到更改后的变化。复制控制文件并重新启动数据库系统后,所做的更改生效了。此时才可以通过这个查询语句查找到起作用的控制文件。或者说,如果管理员实际复制了控制文件,但是在这里查询不到相应结果的话,则说明肯定是哪个地方出现了问题。此时系统工程师就要从头开始来排除故障可能出现的原因。
三、在实现过程中的注意点
显然,要在Windows操作系统上实现控制文件多路复用的话,比较简单。不过在具体的配置过程中,有一些细节方面的内容要引起管理员重视。首先,在使用ALTERSYSTEM更改初始化参数的时候,一定要把原先的控制文件信息带上。也就是说,默认情况下Oracle数据库已经有了三个控制文件。如果数据库管理员还还需要在其他硬盘上多采用两个控制文件的话,那么在ALTERSYSTEM语句中必须加入五条信息。也就是说,原先的控制文件信息必须也带上。如果在这条语句中,数据库管理员只带上两条新控制文件的语句的话,则数据库系统会认为原先的三个控制文件都不要了,而直接采用后面加上的两个控制文件来代替。为此笔者提醒各位数据库管理员,在调整设置的时候千万不要犯这个低级的错误。其次需要考虑多路复用控制文件的存储位置。像数据库的默认设置,控制件时存储在同一个目录中。
这显然并不是很安全。至少要将控制文件放置在不同的硬盘上或者分区上。具体来说,控制文件的每个副本都应该保存在不同的磁盘驱动器上。也就是说可以将控制文件的副本存储在每个存储有重做日至文件组组成员的硬盘驱动器上。不过有一点需要说明的是,***不要将控制文件的副本保存在网络主机上。这主要是因为系统会同时更新多个数据库控制文件。如果网络比较繁忙时,更新网络主机上的控制可能会花费比较多的时间。可见,这个位置的选择不仅关系到控制文件的更新速度,而且还关系到控制文件副本的安全性。为此在规划数据库的时候,也需要好好想想这个控制文件副本该存放在哪个地方合适。第三需要注意的是,这个控制文件的默认存储位置在不同的操作系统中是不同的。
如在Linux操作系统与Windows操作系统中,虽然默认情况下都是三个控制文件,其中连个为控制文件的副本。但是他们存储的路径不同。为此如果要在不同的操作系统上多路复用控制文件时,就需要通过上面的查询语句来查询当前生效的控制文件。千万不要凭感觉去找。因为即使你找到了控制文件,也不能够保证这个控制文件是否有效的,是否包含了***的内容。如果不是的话,则无法保证所有的控制文件都相同,无法确保所有控制文件能够互为镜像。
【编辑推荐】