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