数据保护技术在医院信息系统数据库中的应用
2015-01-27杨燕红刘长兴蒋阅峰
杨燕红,刘长兴,蒋阅峰
1. 济南军区总医院 信息科,山东 济南250031;2. 山东大学 控制科学与工程学院,山东 济南 250014
数据保护技术在医院信息系统数据库中的应用
杨燕红1,刘长兴1,蒋阅峰2
1. 济南军区总医院 信息科,山东 济南250031;2. 山东大学 控制科学与工程学院,山东 济南 250014
甲骨文推出的Oracle数据库高可用性数据保护(Data Guard)方案,它以低成本、高效能解决了数据库的备份和容灾问题。本文详细介绍了在我院医院信息系统(HIS)数据库中建立Data guard环境的方法和过程,并对Data guard环境测试和应用中出现的故障及故障排除进行了归纳总结,值得同行参考与借鉴。
医院信息系统;Data Guard;数据库备份;数据库容灾
我院的医院信息系统(HIS)采用 Oracle数据库作为后台数据库管理系统,满足了HIS数据量大、数据类型复杂和并发事务多的要求[1]。随着应用功能的不断扩大,其业务范围覆盖了医院的各项医疗活动,数据量也迅猛增长,一旦数据库发生故障和灾难会直接影响医院业务活动的正常运行,甚至给医院造成巨大损失。甲骨文推出的Oracle数据库高可用性数据保护(Data Guard)方案,是一种有效的数据容灾解决方案[2]。因此,我们在数据库热备份的基础上又采用了Data Guard建立备份架构,防止数据丢失,实现快速灾难恢复,进一步保障数据安全。本文详细介绍了Data Guard在我院HIS数据库的实施过程与应用体会。
1 Data Guard环境建立
Data Guard环境由一个主数据库(Primary)及一个或多个备用数据库(Standby)组成,可由Oracle 数据库内部网络架构连接分布于不同地域。主备库之间通过重做传输服务和日志应用服务可以实时恢复数据以保证数据的同步[3]。我们在两台服务器上搭建Data Guard 环境,操作系统为Microsoft Windows Server 2008、Enterprise x64 Edition SP2;数据库版本为Oracle Database 10g、Enterprise Edition Release 10.2.0.4.0 - 64bit Production。主、备数据库安装时设置为归档模式,并且逻辑结构一致[4-6]。安装步骤如下:
1.1 主库端设置
(1)设置主数据库为强制日志模式,强制数据库在任何状态下必须记录日志。主库创建是为主、备数据库切换使用的。
(2)创建备库,添加备用联机日志文件,文件大小与主库联机日志文件大小相同,日志文件组数至少比主库多1个。
(3)修改监听和连接配置文件,增加指定全局数据库名,主、备库别名及连接地址等。
(4)创建备库的控制文件和密码文件。
(5)创建、修改初始化参数文件,配置Data Guard环境所需的数据库别名,设置主、备库归档参数及状态等。
(6)关闭数据库,使用参数文件重启主库并创建二进制参数文件。
1.2 备库端操作
(1)修改备库监听和连接配置文件方法同主库。
(2)拷贝文件并配置备库初始化参数。
(3)关闭主备库,拷贝数据文件、参数文件、密码文件、联机日志文件及创建的备库控制文件到相应的文件夹下,修改初始化参数文件,将文件中的主库与备库位置互换。复制备库控制文件并分别重命名为control01.ctl,control02. ctl,control03.ctl。
(4)使用参数文件启动备库,创建二进制参数文件。
1.3 测试
(1)主、备库分别重启监听服务,并执行连接测试命令,查看主备之间是否连通。
(2)备库装入数据时查看是否存在恢复进程MRP0,如果没有,执行启动语句重做。
(3)主库正常启动后,验证归档目录是否有效并强制归档。
此时分别查看主、备归档日志的最大序列号,如果主备查询结果一致,并且主库和备库的归档目录下产生了相同的归档日志文件,则Data Guard环境建立完成。
2 主、备数据库同步设置
修改数据库保护模式,实现主、备库数据同步[7-8]。Data guard有3种数据保护模式,分别为最大保护、最高可用性和最高性能保护模式。最大保护模式下主备库之间数据完全同步,但是如果网络或备库出现问题会直接影响主库操作,导致主库宕机;最高可用性模式下主备库之间数据同步,当网络或者备库出现问题时,不会导致主库宕机,待备库可用时,将归档传输到备库做恢复;最高性能模式下主备库之间数据是异步传输的,主数据库具有更高的性能,但有可能会丢失少量数据。
为保证数据实时同步,主服务器发生故障时不丢失数据,综合考虑后我们选择了最高可用性模式并在备库启动实时应用。具体操作过程如下:
(1)修改主库日志传送方式为日志写进程(Log Writer,lgwr)同步方式[9]:SQL>alter system set log_archive_ dest_2='SERVICE=standby lgwr SYNC AFFIRM VALID_ FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_ NAME=standby'。
(2)修改主库保护模式为最高可用性:SQL>alter database set standby database to maximize availability。
(3)执行后查看保护模式和保护级别:SQL>select protection_mode,protection_level from v$database。如果保护模式和保护级别均为最高可用性,则修改成功。主库的保护模式修改之后,备库的模式也会改变,和主库保持一致。
(4)备库执行语句启动实时应用:SQL>alter database recover managed standby database using current logfile disconnect from session。
3 应用实例
Data Guard搭建完成后,由于所要求环境的严格性,易出现异常情况,因此需要经常查看状态是否正常,笔者归纳整理了使用过程中出现的几次故障与应用情况。
3.1 常用查看语句
查看备库进程是否正常,包含归档进程(ARCH)、恢复进程(MRP0)及远程文件服务(RFS):SQL>select process,status,sequence# from v$managed_standby;
查看主库数据保护模式和级别:SQL>select protection_ mode,protection_level from v$database;
查看备库恢复模式是否为实时应用(MANAGED REAL TIME APPLY),保证在最高可用性模式下实时同步数据:SQL>select recovery_mode from v$archive_dest_status where dest_id=2。3.2 故障现象与排除
3.2.1 备库未接收到主库日志信息
备库显示RFS进程序列号为0,主库查询归档目录状态时,备库端目录显示错误ORA-12571:TNS包写入程序失败。
TNS(Transparence Network Substrate)意为透明网络底层,专门用来管理和配置Oracle数据库和客户端连接[10]。因此,首先怀疑是网络故障。此时,在主服务器上ping备库IP地址提示响应超时,但与其他机器连接正常。检查备库网络连接,在备库端ping主库和其他地址均能正常响应;再检查防火墙,在备库端打开“Windows防火墙”设置,发现防火墙被人启用了。立刻关闭防火墙,此时主库ping备库正常,稍后备库状态恢复为有效,从断点处能正常接收主库传来的日志信息并即时成功应用。
3.2.2 归档日志文件没有生成
备库没有RFS进程,在主库查询归档目录,备库端目录显示错误ORA-01031:Insufficient privileges,提示权限不足。
备库的RFS进程主要用来接受从主库传送过来的日志信息,可以直接将日志写进备库重做日志或归档日志中。此时,主、备数据库网络连接正常,能互联互通。此问题出现是由于主库因网络连接服务异常而执行了重新启动,分析后联想到Oracle数据库连接问题。在Oracle数据库中连接的认证方式有两种:分别是操作系统认证和密码认证,远程连接必须使用密码认证[11]。主库sys口令最近被修改过,而Data guard搭建时要求主备库口令必须一致。由此推断,主库重启后再远程连接备库时因密码改变而导致认证失败,权限不足。紧接着将主库sys口令改回原来的口令,一切恢复正常。3.2.3 热备份数据不能恢复
在恢复热备份数据过程中启动实例和恢复数据正常,但在打开数据库将其变为可用时报错:
ORA-00449:background process 'DBW 0' unexpectedly terminated with error 16072
ORA-16072:a m inimum of one standby database destination is required
提示至少需要1个备库。分析原因是设置了保护模式为最大可用性,所以至少需要1个备库支持。此时,在备用服务器执行恢复命令后,要先将保护模式修改为最大性能,就可以将数据库打开变为可用。
3.2.4 主服务器反复重启
故障切换是主数据库出现计划外的灾难性故障且不可能及时恢复时,将备用数据库用作新的主数据库的操作,可以快速实现灾难恢复[12-13]。如我院曾出现过主服务器因raid卡控制器故障而不断重启导致不能使用,此时主库瘫痪,立刻启用备库,操作如下:
(1)停止应用归档:SQL>alter database recover managed standby database finish force;
(2)将STANDBY数据库切换为PRIMARY数据库:SQL>alter database commit to switchover to primary;
(3)正常关闭、启动数据库并修改IP地址,替代主库。
4 讨论
4.1 注意事项
在Data Guard建立与使用过程中下面几点需要注意:①主备库Oracle数据库版本必须一致、逻辑结构相同,以免出现数据库错误;②搭建过程中仔细谨慎按照步骤操作,保障环境搭建成功;③建议对主数据库的可用性和性能与丢失少量数据的风险进行比较衡量,在最高可用性和最高性能两者中选择保护模式;④最高可用性必须保证备库有备用联机日志文件,并且主库的日志传送方式为同步方式;⑤不要对主、备库的口令和状态随意修改,要经常查看主、备库的Data Guard环境是否正常。
4.2 应用效果
以前我们一直采用热备份方式备份数据,主机一旦宕机,在备用机应用归档日志文件恢复至少需要0.5 h,并且会损失部分数据。应用Oracle Data Guard可以在几分钟内完成数据库切换,恢复正常使用,而且不会丢失数据。相比之下优点明显[14]:
(1)灾难恢复和高可用性。Data Guard 提供了高效全面的灾难恢复,易于管理的转换和故障切换功能允许主备数据库之间角色转换,从而使主数据库中断所导致的停机时间减到最少。
(2)完全的数据保护。通过自动检测和解决中断、防止数据损坏和用户错误的安全保护,保证备库数据零丢失,与主库同步。
(3)有效利用系统资源。备用数据库可用于备份操作、报表、统计和查询等其他任务,从而减少主数据库工作负载。
(4)数据保护方式灵活。Data Guard 提供了最大保护、最高可用性和最高性能等模式,可以帮助企业在系统性能要求和数据保护之间取得平衡。
(5)低成本的备份方案。Data Guard具有Oracle数据库完全集成的功能,不需要单独安装,无需任何额外费用。
总之,Data Guard具有优越的性能,使用后能够迅速、高效地处理难以预见的业务中断,保护数据不受故障、灾难、错误和崩溃的影响,值得推广和使用。
[1]彭红波,韩晟,蔡宏伟,等.DataGuard在“军字一号”系统中的应用[J].中国医疗设备,2012,27(3):43-45.
[2]杨剑,王瑜.O racle Data Guard容灾技术的研究与实现[J].现代计算机,2012,(13):10-14.
[3]林树泽,李渊.O racle 数据库进阶-高可用性、性能优化和备份恢复[M].1版.北京:清华大学出版社,2011:140-143.
[4]Larry Carpenter,等.O racle Data Guard 11g 完全参考手册[M].刘玉达,危建辉,张敏.译.1版.北京:清华大学出版社,2011:27-58.
[5]李丙洋.涂抹O racle:-三思笔记之一步一步学O racle[M].1版.北京:中国水利水电出版社,2010:200-246.
[6]刘冬梅,秦方钰,马建萍.Oracle数据库远程备份的设计及实现[J].信息安全与技术,2012,(12):84-86.
[7]张帆,李响,张红君.军卫一号O racle8i到O racle11g在异构环境下的升级过程[J].医学信息学杂志,2014,(1):26-28,32.
[8]赵志慧.数据容灾备份的方法与实现[J].计算机光盘软件与应用,2012,(8):36.
[9]李民.基于O racleDataGuard构建医院信息系统的容灾备份方案[J].医疗卫生装备,2012,33(8):45-47.
[10]Bryla B,Loney K.O racle Database 11g DBA 手册[M].刘伟琴.译.1版.北京:清华大学出版社,2009.
[11]臧建莲,张宇敬.O racle 数据库安全技术与策略[J].电子技术与软件工程,2014,(2):203.
[12]潘传迪.基于Data Guard和RMAN的Oracle数据库容灾方案[J].医院管理论坛,2014,31(1):51-54.
[13]江英琴.基于日志复制的医院容灾备份系统的构建与应用[D].杭州:浙江工业大学,2014.
[14]王靖,刘丽杰.O racle Data Guard容灾监控方案探讨[J].信息通信,2012,(6):201-203.
App lication of Oracle Data Guard in the Hospital Information System Database
YANG Yan-hong1, LIU Chang-xing1, JIANG Yue-feng2
1.Department of Information, Jinan M ilitary General Hospital, Jinan Shandong 250031, China;2.College of Control Science and Engineering, Shandong University, Jinan Shandong 250014, China
Oracle Data Guard is a high-availability protection technology of database. Backup and disaster tolerance can be realized by using Data Guard w ith low cost and high performance. This paper introduced the steps of building Oracle Data Guard environment in the hospital information system database, and summarized several usages under the environment, which provided references and deserved w ider application.
hospital information system;Data Guard;database backup;database disaster tolerance
TP319
A
10.3969/j.issn.1674-1633.2015.09.029
1674-1633(2015)09-0096-03
2015-03-14
2015-05-13
蒋阅峰,副教授。
通讯作者邮箱:jyfyyh@163.com