蔡小祥 李晓华
(华中科技大学同济医学院附属同济医院 武汉430030)
Oracle STREAMS数据同步复制技术应用
蔡小祥 李晓华
(华中科技大学同济医学院附属同济医院 武汉430030)
简要介绍Oracle STREAMS技术原理和同步过程,以华中科技大学同济医学院附属同济医院为例,阐述HLR综合数据库的构建及Oracle STREAMS同步实现过程,总结其实施与维护经验,HLR数据库既提供综合查询和报表功能,又能满足灾难备份的要求。
日志挖掘;STREAMS;多对一复制; 高级队列
选择和集成Oracle公司的DATAGUARD,STREAMS,Recovery MANAGER(RMAN)等工具产品,构建基于Oracle数据库的高可用架构,可减少和消除Oracle数据库在计划内和计划外停机的影响[1]。医院信息系统(HIS)、检验信息系统(LIS)、放射信息信息(RIS)是华中科技大学同济医学院附属同济医院重要的Oracle数据库信息系统,配置Physical Standby灾难备份DATAGUARD,设置最高可用保护模式[2]。但数据库在大的统计查询、月末报表的访问时性能有些慢。为解决数据库性能问题并进一步提高信息系统安全等级[3],先将HIS、LIS、RIS源数据库整合到一个HLR目标数据库,利用STREAMS同步源数据库与HLR目标数据库数据,既提供综合查询和报表功能,又能满足灾难发生时充当应急数据库服务器使用,保障业务的不间断[4]。
STREAMS作为Oracle数据库组件之一,使用Oracle LOGMINER技术挖掘源数据库日志,还原成LCR ,使用数据库SGA分配内存,建立STREAM POOL,占用数据库资源,是Oracle高级队列(Oracle Advanced Queue)技术的一种扩展应用。Oracle STREAMS数据库提供包和存储过程配置、同步复制数据,数据源和目标端配置队列Queue;在数据库源端,配置捕获、传输进程、数据库链接,利用日志挖掘技术把日志内容还原成逻辑变更记录(Logical Change Record, LCR),一个LCR对应一个原子的行变更,数据库源端上的一个数据库操作语言语句对应若干个LCR记录,这些LCR保存到数据库源端本地发送队列中,传输进程把这些记录通过网络数据库链接发送到目标数据库的接收队列。在目标数据库一端,配置应用进程,应用引擎按SCN顺序执行LCR,分别实现对数据库级、Schema级、Table级的数据同步[5]。实现的基本过程,见图1 。
图1 Oracle STREAMS同步实现过程
3.1 主要数据库应用现状和改进目标
华中科技大学同济医学院附属同济医院HIS、LIS、RIS服务器系统是Linux5.6,数据库是Oracle10.2.5,用EMC存储陈列存储数据文件。HIS 数据库有45个用户模式,数据文件大小460 G,每天产生8 G日志文件和600 M数据文件; LIS数据库有XHSYSTEM、DBO、MIS 用户模式,数据文件大小是274 G,每天产生3 G日志文件和200 M数据文件;RIS数据库有TJRIS和TJPACS用户模式,数据文件大小是166 G,每天产生80 M数据文件和2.5 G日志文件;LIS、RIS使用HIS的基本数据字典,3个数据库没有相同的用户模式,在数据库访问高峰时性能有些慢。整合HIS、LIS、RIS源数据库到HLR 目标数据库,HLR 包含HIS、LIS、RIS数据库的全部用户对象和数据。用HLR替代HIS、LIS、RIS数据库的实时查询和报表功能;HLR目标数据库也作为HIS、LIS、RIS数据库的灾难备份服务库。
3.2 数据库来源端到目标数据库的整合
HLR数据库服务器配置3 T的EMC存储,安装Linux5.6和Oracle10.2.5,HIS数据库使用恢复管理器工具复制数据库文件到HLR服务器安装数据卫士数据库[6],失效备援转换为目标主数据库,数据库名为HLR;使用Oracle的导入/导出工具,导出LIS数据库的XHSYSTEM、DBO、MIS用户对象数据并导入到HLR相应的XHSYSTEM、DBO、MIS用户模式下;导出RIS 数据库放射信息和影像用户对象数据并导入到HLR相应的TJRIS和TJPACS用户模式,同时实例化这些用户信息,保持SCN的连续性。在HIS、LIS、RIS、HLR数据库创建专用用户DUPADM、专用用户表空间TSP_DUPADM、数据文件DUPADM.dbf。对HIS、LIS、RIS源数据库创建数据库链接、队列、捕获、传输进程,在HLR目标数据库创建与HIS、LIS、RIS源数据库相对应的数据库链接、队列、应用进程。HIS数据库按全库级别,LIS、RIS 按用户级别与HLR数据库保持同步,见图2。
图2 Oracle STREAMS多对一单向复制
4.1 概述
参考Oracle 10GR2 STREAM官方文档,使用STREAMS软件包,配置HIS、LIS、RIS源数据库到HLR目标数据库的同步。由于篇幅限制,本文只简述RIS源数据库到HLR目标数据库同步过程。
4.2 设定数据库初始化参数和连接字符串
修改RIS、HLR数据库的INIT.ORA文件的参数,JOB_QUEUE_PROCESSES=10,AQ_TM_PROCESSES=10,STREAMS_POOL_SIZE =300M, GLOBAL_NAMES=TRUE。添加RIS、HLR数据库TNSNAMES.ORA文件连接本地和目标数据库连接串。
4.3 使用sys用户连接完成同步配置
对RIS数据库设置归档模式,启用追加日志,全局数据库名为RIS。修改HLR的全局数据库名为HLR。在RIS和HLR数据库创建DUPADM用户、表空间TSP_DUPADM、数据文件DUPADM.dbf。授权DUPADM用户CONNECT、RESOURCE、AQ_ADMINISTRATOR_ROLE、DBA、SELECT_CATALOG_ROLE权限和STREAMS 的授权权限。LOGMINER系统表空间转移到TSP_DUPADM表空间。
4.4 使用DUPADM用户连接完成同步配置
创建RIS对HLR数据库链接HLR、HLR对RIS数据库链接RIS。在RIS上创建队列RIS_QUEUE,在HLR 上创建队列RHLR_QUEUE,在RIS上执行包过程创建CAPTURE进程CAPTURE_RIS,设置捕获TJPACS、TJPACS用户模式规则,创建传播进程RIS_TO_HLR,设置队列传输TJPACS、TJPACS用户模式数据到目标数据库HLR规则。在HLR上创建应用进程APPLY_RIS,设置TJRIS和TJPACS用户模式的应用规则。
4.5 初始化HLR数据并启动同步进程
在RIS数据库环境EXP导出TJPACS、TJPACS模式对象数据,在HLR数据库环境IMP导入TJRIS、TJPACS模式对象数据,在HLR数据库设置与RIS数据库相同SCN,以保持HLR数据库数据和RIS数据库一致。启动捕获、传播、应用进程。
5.1 目标数据库建立和设置
用户模式imp前,先在HLR数据库创建必要的源数据库用户、角色,能正确导入对象的授权,使HIS、LIS、RIS应用程序直接访问HLR数据库。STREAMS从HIS、LIS、RIS到HLR单向同步,目标HLR数据库不开归档日志,很大程度提高HLR数据库的应用效率,又节约归档日志存储空间。
5.2 STREAMS复制冲突解决
STREAMS配置完成后,应用进程由目标数据库与源数据库的数据冲突导致应用终止,使STREAMS不能同步。在数据库同步开始时,要保证目标HLR数据库与源数据库同步对象SCN连续一致;目标HLR数据库虽是打开读写状态,HLR数据库用于查询和报表等只读操作,保持目标HLR数据库与源数据库同步对象的内容一致,保证STREAMS的稳定运行;STREAMS提供了数据操作语言的更新操作冲突句柄供用户自设置参数调用,数据操作语言的删除、插入操作冲突句柄用户自定义并新增用户过程解决。对一些常见的数据库表复制定义了冲突句柄,逐渐完善解决过程,防止应用进程终止。
5.3 STREAM日常维护
HLR目标数据库建立后,定期查看HLR目标数据库的DBA_APPLY状态,源数据库的DBA_CAPTURE、DBA_PROPAGATION状态,以了解应用、捕获、传输进程的运行状况。在实际运行中,应用进程由于复制冲突导致终止的较常见,通过应用的错误信息找出冲突的原因,消除冲突后再执行DBMS_APPLY_ADM.EXECUTE_ERROR过程产生的修改,重新激活应用进程。对特定数据库表常发生复制冲突,定义操作冲突句柄,避免应用进程的停止。使用PowerBuilder工具开发图形化的STREAMS维护软件,查询STREAMS相关系统表和动态视图,调用STREAMS提供的软件包过程和用户自定义过程,监控整个复制数据同步的过程和状态,在用户干预下对报错信息进行处理。
STREAMS作为免费的Oracle数据库组件,配置较为灵活,它挖掘源数据库日志的SQL代码并在目标端数据库对这些SQL代码应用以同步数据,对操作系统和数据库平台的支持较多,应用较为广泛,功能十分强大。利用STREAM建立的HLR数据库在实时同步的同时允许对实时数据进行查询、报表生成,可用于测试、备份等。HLR数据库可以较大地提升数据库的可用性和安全性。STREAMS维护较数据卫士复杂,且对部分数据类型和加密过的数据不支持。Physical Standby使用介质恢复技术在数据块级别恢复,效率高,逻辑结构和物理结构同主数据库保持一致。Oracle STREAMS作为Oracle高可用方案对数据卫士进行补充。
1 http://www.oracle.com/technetwork/datarase/features/availability/index.html[EB/OL].[2014-05-30].
2 李民,曹阳.基于Oracle Data Guard构建医院信息系统的容灾备份方案[J].医疗卫生装备,2012,33(8);45-47.
3 林济南,王虹.医院信息系统容灾方案的设计与实现[J].中国医疗设备,2013,(9):47-49.
4 周芃,刘道践.使用Rman实现克隆复制ORACLE数据库[J].中国医学装备,2012,(3):21-23.
5 谈永奇,苏莹.基于ORACLE 的数据同步技术在HIS中应用与研究[J].中国数字医学,2010,5(5):68-70.
6 潘传迪.基于DataGuard和RMAN的Oracle数据库容灾方案[J].医院管理论坛,2014,(1):51-54.
Application of Oracle STREAMS Data Synchronous Replication Technology
CAIXiao-xiang,LIXiao-hua,
TongjiHospital,TongjiMedicalCollege,HuazhongUniversityofScienceandTechnology,Wuhan430030,China
The paper briefly introduces the technical principle and synchronous process of Oracle STREAMS, taking Tongji Hospital, Tongji Medical College, Huazhong University of Science and Technology as an example, it elaborates HLR comprehensive database construction and Oracle STREAMS synchronous realization process, summarizes its implementation and maintenance experiences. HLR database can not only provide comprehensive query and report function, but also satisfy the requirements of disaster backup.
Log miner; STREAMS; Many to one copy; Advanced queuing
2014-09-18
蔡小祥,工程师,发表论文2篇;通讯作者:李晓华。
R-058
A 〔DOI〕10.3969/j.issn.1673-6036.2015.02.009