数据库备份是保障数据库安全的重要手段之一。绝大部分数据库管理员都已经发现对数据库进行备份的重要性,甚至对其具有很大的依赖性。为此数据库管理员必需肯定备份策略确实可靠。一个没有经过测试的备份策略其实比没有进行备份更加糟糕,因为它会给各位数据库管理员一种假的安全感。

但是笔者发现不少的数据库管理员在遇到服务器故障时,却不时的会遇到无法顺利利用故障文件恢复数据库或者数据库备份文件不完整等问题。这主要是因为大家只注重数据库的备份策略,但是却忽视了数据库备份文件的测试策略。如果备份文件不完整或者出现错误的话,那么及时备份策略制定的再好,也是竹篮子打水一场空。为此笔者在这里郑重建议大家,数据库备份测试策略与数据库备份策略一样的重要。那么做为Oracle数据库管理员,该如何做好这方面的测试工作呢?对此笔者有一家几个招数,或许能够帮助大家解决这方面的问题。

招数一:模拟各种现实中可能出现的问题。

很多原因会导致数据库服务器罢工,而这些罢工很有可能造成数据库中现有数据的损坏。为此数据库管理员必需凭借自己的经验列举出现实中可能出现的故障情况。然后针对这些可能发生的故障,去测试现有备份策略能否有效的应对。

如笔者给企业部署完Oracle数据库之后,一般都会模拟各种现实中可能出现的问题。然后针对这些问题进行一一测试。如笔者会在一个更新事务处理的过程中,突然关闭电源。然后再重新启动数据库服务器,查看这次断电事故对服务器可能造成哪些影响?能否利用现有的备份文件与日志文件把数据库中的数据恢复到断电的那一个点上?如笔者还会测试用户错误的更新了大量的数据,并且已经递交了事务。此时需要测试看看能否利用重做日至文件来恢复更新之前的数据?如企业如果采用了磁盘阵列的话,那么笔者还需要测试磁盘阵列的有效性。如把某一块硬盘拿掉,添加上一块新的硬盘,看看其数据库服务器能否正常恢复数据。总之一句话,通过模拟各种失败以及从这些失败中进行恢复,看看能否恢复到故障发生时的点。这些测试工作将会给数据库管理员获得书本上没有的无价经验。

具体来说,笔者认为数据库管理员在模拟失败时,以下几个失败的原因不能够放过。一是服务器突然断电,这可能导致配置文件的错误导致无法访问或者数据的丢失;二是重做日志发生损坏,这可能导致数据库管理员无法把数据恢复到故障发生时的点;三是硬盘发生故障而导致数据丢失,这主要是要测试备份文件异地存放的有效性;四是数据批量更新的错误处理,这主要是测试数据库管理员在进行批量更新之前是否有先对数据库进行备份的习惯,等等。数据库管理员只有预先模拟现实中各种可能出现的问题,并得到解决方案。只有如此,在真正遇到这些问题的时候,数据库管理员才能够临危不乱,迅速解决故障。

当然这些测试好是能够在另外一台主机上进行测试。在生产服务器上进行这些破坏性测试的话,可不是一个明智的做法。