控制文件备份关键是选择备份时机
2009-07-01 11:50:15 来源:WEB开发网一般来说,如果发生如下事件的话,则数据库的控制文件会发生改变。如当数据库发生物理变化时,如删除或者添加数据文件时,数据库系统会自动将这个信息反映到控制文件中。如当系统出现检查点时间时,检查点进程会自动修改控制文件,以便数据文件和重做日至文件保持同步。如果数据库采用的是归档模式,则归档进程会自动用归档日至文件名和日至序列号等信息去修改控制文件。使用RMAN备份工具时,RMAN的备份信息会被记录到控制文件中。可见这些因素都在影响着控制文件的更新。特别是检查点进程。因为数据库大检查点的时间间隔可能只有1小时,甚至更多。此时每发生一个检查点事件,就会更新控制文件。如果每更新一次就做一次备份的话,那工作量就可想而知了。为此,要从以上这些因素中挑选一些必须要进行控制文件备份的时机。
三、选择控制文件备份的合适时机。
其实根据笔者的经验,只有第一类事件,即数据库发生物理变化时,对控制文件进行备份就可以了。因为只有这个事件对控制文件造成的影响,才会影响到数据库的启动与稳定运行。其他对控制文件的更改,只要下一次事件发生后,就会自动更新。如就拿检查点来说,如果采用的新的控制文件,没有记录最新的检查点信息,也没有关系。只要在下次检查点时间发生之前不要采用恢复作业即可。也就是说其影响是暂时的。等到新的检查点时间发生时,其就会将最新的信息更新到控制文件中。具体的来说,当发生以下事件对数据库的控制文件产生更新时,最好及时对控制文件进行备份。
一是表空间发生的更改。如管理员新增了一个表空间,或者删除了表空间,此时都会对控制文件产生很大的影响。要进行及时的备份。另外需要注意的一点就是如果更改了表空间的状态,如将表空间设置为只读时,此时虽然没有对数据库的物理结构产生很大的影响,但是其可能影响数据的一致性问题。为此若更改了数据库表空间读写状态时,也最好对控制文件进行必要的备份。
二是数据文件发生物理性变化时,即新增了数据文件或者删除了某个数据文件,此时就需要对控制文件进行备份。因为如果此时不备份的话,若因为故障采用了旧的控制文件,数据库就不会读取新家的数据文件中的内容,从而导致数据丢失。所以,当数据文件发生物理变化时,对控制文件进行备份是必要的。
三是重做日志组或则重做日志文件发生物理性变化,如添加或者删除时,跟上面的道理相同,也最好手工立即进行控制文件的备份。
除了以上三个事件,一般情况下不需要对控制文件进行备份。当然,在条件可行的情况下,数据库管理员也可以将以上的备份语句写入到一个脚本程序中。然后利用系统的任务计划实现控制文件的自动备份。这也是可行的。不过即使如此,也很难实现控制文件一有变化就马上进行备份。笔者以前在Linux系统上进行过类似的测试,可以根据备份文件的更新时间来进行备份。不过笔者觉得没有这么做的必要,这只是出于技术上好奇才去研究的。各位读者若对此感兴趣的话,下次笔者可以将这个方案拿出来供大家讨论。
总之笔者认为当数据库的物理结构发生变化时对控制文件进行备份即可。而不需要控制文件一有变化就对其进行备份。这有点劳命伤财的迹象。
更多精彩
赞助商链接