【eNet硅谷动力专稿】控制文件是Oracle数据库最重要的物理文件之一。若做个比喻的话,控制文件就好像Windows操作系统的注册表一样,存储着跟系统相关的一切配置。当这个控制文件出现问题的时候,很容易导致系统运行的失误。
如当Oracle在装载数据库的时候,系统会根据相关的初始化参数定义相关的控制文件。如当Oracle启动例程的时候,会根据控制文件中的配置,在启动的历程跟现有数据库建立有机的联系。如当打开数据库的时候,Oracle系统先会从控制文件中查找数据文件与重做日志文件信息,找到跟数据库对应的文件之后,然后打开他们。可见,控制文件时Oracle数据库有效运行的核心。所以,对于控制文件的管理,也是Oracle数据库管理的重点之一。
不过Oracle数据库虽然比微软操作系统的注册表要简单,但是,其管理的难度却不亚于注册表的管理。在这里,笔者将结合自己Oracle数据库的管理维护经验,谈谈控制文件的管理要点。
要点一:合理选择控制的存放位置
跟注册表不一样,控制文件可以自己选择存放的位置。不过这个位置也很有讲究,控制文件不能够在服务器上乱放。选择控制文件的存放位置有两个基本的原则。
一是不要把控制文件存放在系统盘上。这跟不要把数据文件放在操作系统的C盘上一样。因为若操作系统崩溃等原因,系统盘上的文件很难找回来。所以,一般情况下,不要把控制文件存放在服务器的系统分区了。若数据库管理员一定要做的话,那可能就是在玩火。很可能到时候玩火自焚。
二是做好把控制文件的副本存放在不同的磁盘上。俗话说,天又不测风云。若把所有鸡蛋都放在一个篮子里,到时候这个篮子掉了,则篮子里的鸡蛋都要完蛋了。控制文件的存放也是如此。一般笔者在给客户部署Oracle数据库服务的时候,都建议他们,把控制文件的每个副本都存放在不同的磁盘启动器上。通过分散存放控制文件,可以尽量减少在一个硬盘损坏时丢失所有控制文件,包括联机重做日志文件的风险。到企业遇到最坏的情况,也可以凭借其他硬盘上的内容,尽快的恢复数据库的运行。虽然说添加硬盘可能需要一定的支出,但是,对于Oracle数据库服务器系统的稳定性来说,这点小的支出是完全值得的。
所以,为了你们企业数据库的正常运行,提高数据库的稳定性以及灾后恢复能力,请合理安排控制文件的存储位置。要点二:做好数据库控制文件的备份工作
在给企业系统管理员做操作系统培训的时候,系统培训师会强调定期备份注册表的重要性。对于Oracle数据库的控制文件来说,也是如此。定期备份控制文件,特别是异备份,这是防止服务器出现硬件故障后,尽快修复服务器的最实用、最简便的绝招之一。
一般来说,当数据库管理员进行了如下的操作时,则最好能够及时备份数据库的控制文件。
一是表空间发生改变。如用户添加或者删除了一个表空间,又或者更改了表空间的读写状态,把只写改称只读等等。表空间是Oracle数据库存储数据的场所,其属性发生改变后,对于数据库的影响是非常重大的。若不及时对其进行备份,则当硬盘出现意外故障时,即使有其他的控制文件信息,也很难在短时间内让系统恢复运行。所以,当表空间的内容发生变动时,无论是大还是小,都必须及时的对其进行备份。
二是数据文件的改变。当数据文件的内容发生改变时,如数据库管理员新建、重命名设置删除一个数据文件时,则管理员都要备份数据库的控制文件。另外,重做日志发生改变,如新建或者删除重做日志时,都需要及时的进行备份。
这里要特别注意一点,这些控制文件的备份不会自动触发。也就是说,上面这些内容发生变更后,系统不会自动备份控制文件。而需要数据库管理员手工进行备份。
在Oracle数据库中,一共提供了两种控制文件的备份方式,分别是以二进制文件方式进行备份与以文本文件的方式进行备份。
若以文本文件的方式进行备份,实际上就是把数据运行期间的控制文件原封不动的复制出来。因为数据库在运行的时候,控制文件就是以二进制的形式存储的。此时,我们可以利用如下语句实现以二进制形式进行备份。ALTER DATABASE BACKUP CONTROLFILE TO 文件备份路径。如此我们就可以把控制文件以二进制的形式备份到我们所想要的位置。
另外,我们还可以以文本方式存储控制文件。若用专业点的话来说,这又叫做跟踪备份。ALTER DATABASE BACKUP CONTROLFILE TO TRACE。这个语句跟上面那个备份语句的区别就在于存储的路径上。二进制文件备份的话,则需要数据库管理员指定其备份的路径。而以文本文件形式备份控制文件的话,则其备份路径是被其他控制文件的参数指定的。若数据库管理员需要重新指定备份路径的话,则就需要修改初始化文件。一般情况下,这个路径是存放在USER_DUMP_DEST中。通常笔者在给客户部署Oracle服务器的时候,都会修改这个参数文件。因为默认情况下,这个路径是保存在Oracle的安装目录下,这样比较危险。
不过无论采取哪种备份方式,有一点需要强调,就是在做好本机备份的同时,一定要把这些控制文件在异地进行备份。只有如此,才能够应对Oracle数据库服务器的突发性硬件故障,如硬盘等意外损坏等等。要点三:利用多路复用技术,提高控制文件的安全性
在应用服务器中,可以通过磁盘阵列,来提高应用服务器的灾后恢复能力。当其中一块硬盘损坏时,则可以利用其他硬盘上的数据最快的恢复到服务器原先的状态。可见,通过磁盘阵列技术可以提高数据库的访灾能力。
Oralce数据库在控制文件的管理中,也借鉴了磁盘阵列技术,开发了一种叫做“多路复用”的技术。通过这个技术,可以最大限度的提高控制文件的灾后恢复能力。
多路复用就是指Oracle数据库应该有两个以上的控制文件,最好能够达到四个左右。然后把它们存放在不同的硬盘上,从而实现类似磁盘阵列的多路复用。通过多路复用技术,数据库管理员能够有效的避免数据库出现单点故障的风险。不过这可能会对数据库的性能有一定的影响,因为数据库对控制文件的修改可能需要花费比原先更长的时间。不过,虽然这事件投资下去了,但是,其回报还是会蛮丰厚的。我们都知道,控制文件控制着数据库的运行,如果因为某个硬盘损坏而导致控制文件出现故障时,则这个数据库就会启动不起来。此时,若用户更换一个硬盘后,就可以利用另一个硬盘上保存完好的控制文件副本来恢复损坏的控制文件。
其实,多路复用也可以看作是控制文件备份的一个特列。只是控制文件备份往往需要手工进行。或者说,通过命令调度实现自动备份,但是,其总有一个时间上的差异,不能够实现任一时点的恢复。而多路复用技术的话,则相当于时时刻刻都在对数据库控制文件进行备份。当利用多路复用技术恢复数据库的时候,则可以恢复到最近的状态。
所以说,我们可以把多路复用技术,看作是磁盘阵列在Oracle数据库中的一个“软”实现形式。为了保障控制文件不出现问题,我们Oracle数据库工程师都会建议企业数据库管理员,在条件允许的情况下,采用多路复用技术,来提高控制文件的安全性。
虽然说Oracle数据库运行的时候,控制文件时一个比较小的二进制文件。但是,它确是Oracle数据库运行的“神经系统”。若没有这些控制文件在Oracle系统运行的时候穿针引线,则Oracle数据库就好像没有线路的汽车,只能当作花瓶看看。无论是数据库的创建,还是对数据库物理结构的改变,都会在控制文件中反映。为此,Oracle数据库系统就给数据库管理员提出了一个比较苛刻的要求,要百分之百的保证数据库控制文件的安全。所以,数据库管理员要灵活应用Oracle数据库提供的控制文件管理技术,在利用其多路复用技术的同时,合理选择控制文件的存放位置。并且在本机备份的同时,要做好控制文件的异地备份。从点到面,打好控制文件的安全保卫站。
笔者相信,凭借Oracle数据库的控制文件保护手段,再加上数据库管理员的合理调度,数据库控制文件的安全性会大大的提高。为此,数据库管理员在面对一些意外事件时,也都可以有惊无险的渡过。