利用Oracle8i的DataGuard实现”军卫一号”数据库备份
1 数据库备份与恢复概述
随着信息技术的发展与进步,医院信息系统的数据处理量和存储量会越来越大。各项业务系统运行的持续性、稳定性,业务数据的完整性、正确性、有效性,直接关系到医院的运营、管理与决策活动,这就要求对网络通信、服务器及存储设备等关键硬件设备,以及各种操作系统、数据库管理系统等软件的故障恢复进行整体的设计和部署。如果没有可靠实用的备份系统。任何一个环节发生故障和灾难,都会导致医院的业务活动无法正常进行,造成重要数据的丢失和破坏.给医院带来巨大损失.给广大患者带来不便。严重时更会带来重大的社会影响和政治影响尽管我们一再小心谨慎。但是。必然还会发生各种各样的故障甚至灾难。针对可能发生的故障或灾难。采取的唯一措施就是建立一套完整的备份与恢复方案。由于数据库管理系统是医院信息系统的核心。一旦发生故障或灾难,医院信息系统的运行恢复关键取决于数据库的恢复程度和时间。因此,数据库备份与恢复的必要性和重要性非同一般,我们的备份目标及原则应当保证在最短的时间内,尽可能完全地恢复数据。
2 备份方法的选择与比较
目前,军队医院全部使用“军卫一号”系统,后台数据库也都是采用Oracle数据库管理系统。备份方案除极少部分医院使用自购的第三方厂家的专用数据库备份软件外,绝大多数医院采用的是Oracle公司提供的物理备份机,费用较高,因此,本文不做评价。
Oracle公司提供的物理备份解决方案是其最传统的方案。
从早期版本开始,就是由数据库管理系统软件本身提供的。不必额外投资。可以降低成本;备份数据库服务器的配置可以低于在用数据库服务器,节省开销:此方案是定时备份数据库的有关文件及记录数据库变动情况的归档日志文件.一旦数据库需要恢复时,在备份的数据库有关文件基础上,应用备份的归档日志文件,使数据库恢复到所需要的时间点。本方案如果设置完整合理,具有较强的可靠性和可操作性。尤其是可以将数据库恢复到任意时间点,所以,既可以应对各种软硬件故障,还可以挽救软件或人为错误导致的数据丢失。正是因为具有以上这些特点,使得该解决方案成为多数医院数据库备份的首选。
在Oracle7版本时,Oracle公司就提出了待用数据库的概念,并提供了Standby解决方案。到了Oracle8i,在Standby础上,完善、增强了其功能,并将此解决方案称之为DataGuard。该方案需要首先创建待用数据库, 实际上也是在用数据库的备份,然后通过不断地备份、复制及应用归档13志文件,保持其与在用数据库的同步,一旦数据库需要恢复时,只需要再同步少量归档13志文件即可立刻恢复,本方案与物理备份比较.其最大的好处就是可以在数据库发生故障时,在尽可能短的时间内恢复数据库,这对于数据库可用性要求高的应用尤为重要。
首先。由于DataGuard也是Oracle公司随数据库软件产品提供的, 同时待用数据库服务器的配置也可以低于主数据库服务器,所以也具有物理备份节约成本的特点;另外,该解决方案具有保持与在用数据库同步的特点,可以在较大程度上缩短数据库的恢复时间,对于医院信息系统7~24h不停顿的应用情况是难能可贵的;尽管待用数据库解决方案可以提供快速的恢复,但正是为了实现快速恢复,需要及时地同步待用数据库,而这种同步操作又是不可逆的,因此,使它具有一定的局限性。即无法恢复到任意时间点。例如:对于软件或人为错误导致的数据丢失,此方案无法挽救。针对以上特点,我们认为该方案不是医院数据库备份的唯一最佳方法。通常可以根据自己医院的应用及环境。考虑单独采用数据库物理备份或者待用数据库的方案。如果需要满足多种故障恢复需求时,可以采用二者结合使用的方案,效果会更佳。
当然,物理备份和DataGuard由于实现的原理和方法不同,在创建、维护、应用等方面也存在一些差异,由于所有的“军卫一号”用户对物理备份已经相当熟悉,因此,本文仅就同行关注的DataGuard做比较详细的描述。
3 Oracle8i的DataGuard原理及新特点
Oracle8i的DataGuard(在Oracle7时称为Standby)即指待用数据库。它是利用主数据库备份建立的一个数据库复制品。主数据库和待用数据库的同步是通过将来自主数据库的归档重做日志应用到待用数据库实现的。
采用Oracle8i的DataGuard待用数据库作为备份与恢复解决方案,具有以下特点:(1)待用数据库解决方案支持目前所有版本,包括目前使用的Oracle8.1.7,将来如果系统平台升级,无论是Oracle9i J~是Oraclel0g,都支持待用数据库解决方案,而且,随着版本的提高,该解决方案的功能也随之增强,性能也随之提高,具有很好的延续性。(2)自动化程度较高,减少管理及维护成本。Oracle8i的DataGuard可以通过SQL*Net将主站点生成的归档日志文件自动传输到待用站点,同时.还可以将来自主站点的归档日志自动应用到待用数据库。这些是Oracle7的Standby无法做到的,通常需要数据库管理员通过操作系统的脚本及数据库的命令来实现。(3)待用数据库解决方案的实现技术,与通常数据库物理备份相比较而言,最大的好处就是极大地缩短了数据库的恢复时间。(4)数据丢失少,由于该方案仅能应用归档日志,不能应用联机日志。因此,在极端的情况下。如果无法归档联机日志.可能会丢失联机日志文件中尚未归档的数据库改动内容。(5)本方案除了具有数据库的灾难恢复和防止坏数据的保护功能外,还可以只读方式打开待用数据库,不但可以临时提供影响主系统性能的查询统计等业务服务.降低主数据库服务器的性能负载,还可以对本方案的备份恢复进行常规测试,便于及时发现可能存在的问题并使之得到解决.这些也是Oracle7的Standby无法做到的,因为它不支持只读方式打开数据库,只能靠激活数据库来测试,又由于激活操作是不可逆的,所以,当需要临时使用待用数据库或恢复测试后,都需要重新建立环境,非常不方便。(6)当发生灾难时,可以将待用数据库激活,使其立即替代主数据库.为应用系统提供数据库的服务与支持。(7)在灾难备份与恢复的概念中,本方案属于不完全的数据级备份。因为只包含数据库中的数据,而医院应用的数据不但包括数据库中的数据,就目前“军卫一号”应用来说,还应当包括病历文件、输入法文件及应用程序,这些也是不容忽视的。(8)本方案不支持数据库任意时间点的恢复.因此.如果对数据库的恢复有更高要求的话,还需要增加其它备份方案。
综上所述.如果使用Oracle8i的DataGuard,可以达到的应用目标是灾难和软硬件故障恢复。以及补充的查询统计环境。为了进一步提高数据库的安全系数.我们还可以将待用数据库的物理放置与主数据库分开.即最好分别置于不同的建筑物中,实现同城的异地备份。在具体实施过程中,最好利用本方案的自动管理特性,减少复杂性和中间环节,提高系统的可靠性。
4 DataGuard实施过程与维护要点
在使用DataGuard之前,需要为其创建环境,通常需要单独准备一台服务器来安装待用数据库。如果机房、网络等条件具备。还可以将其放置在远离主数据库服务器存放的地方。建立待用数据库过程的简要步骤 如下:(1)做主数据库的备份:利用已经存在的备份也可以。即新旧或是否一致均可.因为可以利用归档日志进行恢复。(2)创建待用数据库的控制文件:连接主数据库,同时主数据库必须是归档方式及自动归档,使用专门的SQL命令,为待用数据库创建控制文件。(3)复制有关文件到待用数据库:需要复制的文件包括:数据文件备份、待用数据库控制文件及主数据库备份后生成的归档日志文件.使用操作系统命令进行拷贝,如果主数据库与待用数据库的路径不同,还需要使用专门的SQL命令或修改待用数据库的有关初始化参数来改变数据文件的路径。(4)配置网络文件:配置主数据库端的tnsnames.ora,为待用数据库创建服务名。以便日志文件自动归档到待用数据库:配置待用数据库的listener、ora满足监听服务请求,以便接收来自主数据库的归档日志文件。
(5)主数据库配置有关初始化参数:根据自动管理方式的要求,除一个本地归档目的地外,必须有一个带服务名的远地归档目的地,建议本地使用MANDATORY选项.远地可使用OPTIONAL选项,REOPEN选项可以在归档不成功时自动再次访问。(6)复制并编辑待用数据库的初始化参数文件:为待用数据库设置与主数据库不同的运行环境。(7)启动待用数据库的实例并加载数据库:执行具有待用数据库专门选项的STARTUP MOUNT命令。(8)应用归档日志到待用数据库:在待用数
据库创建过程中.待用数据库的数据改动情况肯定会滞后于主数据库,其中的差距通常称之为缝隙。在实行自动管理前,首先要填补这些缝隙.即先在主数据库执行归档.然后在待用数据库查询缝隙信息,再执行相应的手工应用。(9)启动归档日志的自动应用管理。
以上过程执行完毕,待用数据库环境就建立起来.以后就可以通过数据库管理系统进行自动同步了。当然,待用数据库建立之后,还存在备份的测试、特殊的维护、待用数据库激活,以及待用数据库的模式改变切换等情况。因此,还需要注意以下方面的问题:(1)由于主数据库物理结构的改变,可能会影响待用数据库,其中有些是由系统自动维护的,不需要数据库管理员人工干预,有些则不然,这时还需要数据库管理员进行简单的手工维护。(2)当主数据库发生故障,需要启用待用数据库时,可以将其激活,这个操作会使待用数据库永久地转换成一个主数据库,由于该操作是单向的,不可逆转,所以,启用后不能撤消,以后还需要创建新的待用数据库。(3)待用数据库需要定期进行测试,在测试时一定不要执行激活操作,只需以只读模式打开它即可,这时可以进行查询,保证待用数据库的数据确实根据来自主数据库的重做日志进行了相应的更新与同步。(4)利用待用数据库的只读模式,还有助于减少主数据库的查询负荷,尤其是大的统计查询,可以将这些访问操作转移到待用数据库端来。
暂时没有评论
发表评论 | 展开/关闭评论 | RSS订阅 | 反项链接