admin 管理员组

文章数量: 1086019


2024年3月20日发(作者:异步fifo程序)

68・ Hospital Digitalization I医院数字化 

基于64位Windows 2003和Oracle 10g RAC的 

“军卫一号”数据库的升级 

程跃斌.林亚忠 

[摘要】 目的:完成“军卫一号”数据库平台升级,解决服务器负载过重及数据库并发连接数过多导致数据库无法连接 

的难题 方法:操作系统升级为Windows 2003(64位),Oracle数据库从8.17升级为10 g(640-),并建ARAC,通过多进 

程、分用户的导出,导入模式完成数据迁移。结果:实现了“军卫一号”数据库的高性能和高可用性。结论:基于64位 

WindOWS平台、将数据库g.Oracle8.17升级为64位10g RAC是一个投入少、效益高的好办法。 

『关键词1 Oracle;RAC;军卫一号;升级 

【中国图书资料分类号]TP392;R82[文献标识码】A[文章编号] 1003—8868(2010)10—0068-03 

Database Upgrade of No.1 Military Medical Project Based on Windows 2003 and 

Oracle 10g RAC(64bit) 

CHENG Yue—bin,LIN Ya—zhong 

(The 175th Hospital of PLA。the A侬liated Southeast Hospital of Xiamen University,Zhangzhou 363000,Fujian Province,China) 

Abstract Objective To complete database platform upgrade of No.1 Military Medical Project,which can improve the 

server Derformance and settle database connection failures caused by too many connections.Methods The operation system 

was upgraded to Windows 2003 f64bit1 and Oracle database from 8.17 to 10g RAC(64bit)with RAC being established and 

data transferred by export/import method according to users with muhiprocessing.R翻Il】舡Improved database performance 

and availability of No.1 Military Medical Project was achieved.Conclusion Upgrading No.1 Military Medical Pr ̄ect 

database from Oracle 8.17 to 10g RAC(64bit)based on windows platform(64bit)is a proper method of producing high 

benefit with sinail investment.[Chinese MedicaI Equipment JournaI,201 0,31(1 0):68—7O】 

Key words Oracle;RAC;No.1 Military Medical Project;upgrade 

1 引言 

10.2.0.4(64位),搭建了双节点的RAC(real application clus— 

我院是一家“三甲”综合性医院,从1999年开始使用“军 

ter)和Data Guard,实现了数据库的高性能和高可用性。 

卫一号”信息系统,并以此为基础,陆续完成了LIS、PACS、门 

2_2数据库升级方案 

诊医生站等系统的建设,现有应用子系统100多个,_T作站近 从Oracle8i到10 g的升级一般有3种方式:升级助手、 

700台。随着应用系统及工作站的增加,“军卫一号”数据库已 导出/导人、通过dblink直接抓取表数据。由于我院当前采用 

增至160 GB,日渐不堪重负,高峰时数据库的最大用户连接 的Oracle版本是8.1.7.0.通过升级助手不能直接升级到 

数达到了1100多,虽然通过降低Oracle为每个连接分配的 

l0-2.0.4版,必须先升级到9i,再升级到10.2.O.4版。经测试, 

stack内存数、设置数据库为共享服务器模式等方法,暂时解 这种升级方式时间过长.无法满足要求。采取表数据提取升级 

决了原来高峰期很多用户无法连接到Oracle数据库的问题, 则必须对“军卫一号”所有表非常熟悉,逐个写出升级脚本,方 

但服务器负载过重,尤其在做大数据量统计时,系统性能急剧 案过于复杂,而且如果表非常大,效率不是太理想。导出/导人 

下降.严重影响了业务系统的正常运转。造成这种情况除了硬 虽然升级时间也比较长,但通过设计较好的方案,可以有效节 

件配置偏低外,最根本的原因就是当前采用32位的操作系统 

省数据迁移时间,充分发挥10g的ASM等新特性的作用.并 

Windows2000和32位的数据库Oracle8.17.受32位系统内存 

可以整理数据库碎片,节约磁盘空间,提升运行速度。 

寻址空间的限制,操作系统内存的使用最多只能达到4 GB, 2.3搭建Oracle 10g的RAC集群,提高数据库性能及安全 

Oracle数据库内存使用不超过2GB,即便采用了4GT技术, 

系数 

也无法突破3 GB。因此,最有效的解决办法就是升级数据库 RAC技术是一个多实例、单数据库的集群系统.数据文 

平台为64位,才能突破系统内存限制。 件、联机日志、控制文件等文件在集群中只有一份,保存于共 

2总体规划 享磁盘阵列上.每个服务器节点通过HBA卡和光纤跳线连接 

2.1 方案概述 

到存储阵列上,运行自己的数据库实例,在Oracle Clusterware 

为了彻底改变数据库性能低下的现状,我院新购了服务 的管理下共享同一个数据库,拓扑结构如图1所示。RAC不 

器及存储设备,并对数据库平台进行了升级,即操作系统升级 

但能够使数据库系统简单地通过增加服务器节点数来横向提 

为64位的Windows 2003,Oracle升级为10g较稳定的版本 

升系统整体处理能力,而且可以提供比单实例数据库更高等 

级的可靠性。而这正适合HIS系统需要7x24 h不间断运行, 

作者简介:程跃斌(1970一),男,福建莆田人,工程师,主要从事医疗卫 

在一个节点出现故障时系统能以最快的速度恢复对外服务的 

生信息化建设的研究工作,E-mail:4zz cyb@sina coin。 

作者单位:363000福建漳州 解放军175医院,厦门大学附属东南医 

要求。下面以我院为例.介绍RAC环境配置方案。 

院信息科(程跃斌、林亚忠) 

2.3.1 RAC的拓扑结构 

医疗卫生装备・2010年10月第31卷第10期 Chinese Medical Equipment Journal・Vo1.31・No.10・October・2010 

医院数字化l Hospital DiQitalization ・69・ 

240 GB用来创建ASM磁盘组HISDG,以存放数据库数据。③ 

2个60 GB的LUN共120 GB用来创建ASM磁盘组 

FRADG,作为数据库闪回区和存放归档日志文件的空间。 

2.3.5 Oracle 10g RAC集群的安装 

Oracle 10g RAC的安装部署在上述IP地址规划、存储空 

间规划等准备工作完成后,即可开始进行。首先安装Oracle 

Clusterware,然后逐个节点安装Oracle Database,最后进行lis. 

tener等相关配置即可。 

2.3.6客户端配置 

Oracle 10g RAC高可用性的基础是Failover,高性能的基 

础是LoadBalance,要根据应用系统设置合理的工作模式,才 

能充分发挥RAC的作用。根据“军卫一号”的C/S模式等工作 

情况.我院采用了Chent_Side Connect Time Failover的 

Failover模式、ClientSide LB的LoadBalance模式,客户端 

图1 Oracle 10g RAC和DataGuard拓扑结构图 

tnsnames的配置内容如下: 

DBSERVER= 

rDESCRIPn0N= 

2.3.2软硬件环境(见表1) 

表1 RAC软硬件环境 

(ADDRESS—UST= 

(ADDRESS= 【'PROTOCOL=TCP)(HOST= 

132.147.1.2)(PORT=1521)iI 

ADDRESS= 【'PROTOCOL=TCP)(HOST= 

132.147.1.241)(PORT:1521)1 

) 

2.3.3 IP地址规划 

fLOAD—BALANCE=yes) 

fCONNECTDATA= 

RAC中要求每个服务器节点至少配有两块网卡.一块网 

卡(Public NIC)用于公共网络上的客户程序通信,配置Public 

IP和Virtual IP地址;另外一块网卡(Private NIC)用于专用集 

(SERVICE—NAME=orc1) 

) 

群通信.配置Prlivate IP地址,见表2。 

表2 RACIP地址规划 

) 

3数据库升级 

3.1 创建基于Oracle 10g RAC的空数据库 

步骤见33节。 

3.2创建“军卫一号”所有对象 

在当前“军卫一号”数据库Oracle 8.17上执行下列脚本, 

即可生成对象创建脚本,然后在Oracle 10g数据库上执行这 

些脚本.就可以创建出“军卫一号”所有对象。 

(1)表空间生成语句 

select"create tablespace Iltablespacenamell nologging ex— 

2.3.4存储空间规划 

(1)服务器节点内置硬盘空间规划 

tent management local uniform size l m; from dbatablespaces 

where tablespace

name<>"SYSTEM ; 

_

2台节点主机各内置2块146 GB硬盘,配置成RAID1, 

(2)用户生成语句 

select"create user ]lusername JI identified by values…l l

password 

_

可用容量约130 GB,其中:①操作系统及Oracle软件使用1O 

GB空间。②内存交换文件使用16 GB空间。③系统Ghost备 

份及其他软件备份、临时文件等占用15 GB空间。④剩余空 

间约90 GB,用于数据库的RMAN备份。 

(2)SAN存储阵列硬盘空间规划 

SAN存储阵列上共8块146 GB硬盘,配置为RAID0+I, 

default tablespace Ildefauhtablespace II. from 

dba

users where username not in("SYS",'SYSTEM."OUTLN', 

DBSNMP'); 

(3)表空间配额生成语句 

select"alter user llusernamel lquota Ildecode(max_kqtes,一1, 

留2块硬盘作为热备盘(Hotspare),可用容量约370 GB,划分 

为1个1 GB的LUN和6个60 GB的LUN:①1G的LUN上 

划分4个约250 MB的区,其中两个区作为Clusterware的 

unlimited .max

bytesI1 lr on Iltablespace_name II. from 

dba ts quotas; 

(4)角色生成语句 

es where role not in 

select"create role Ilrolell ; from dba

rol

OCR和VotingDisk,另外2个备用。②4个60 GB的LUN共 

医疗卫生装备・2010年10月第31卷第10期ChineseMedicalEquipment Journal・Vo1.31・No.10・October・2010 

70・ Hospital Digitalization l医院数字化 

f BA . xP FULL DATABASE IMP FULL DATABASE3; 

(5)授权生成语句 

select"grant 

airn

compile; from dba objects where status<>"VALID ; 

上述操作完成后,即可开启Oracle 10g的对外服务。同时 

开始电子病历的导出、导人操作,合计7 h左右,期问限制有 

关电子病历的使用。 

4备份方案 

4.1 Data Guard保护系统 

I[granted

role l tlo [[grantee[[decode(ad— 

option,"YES , with admin option')l l; from dba—role_privs; 

(6)同义词生成语句 

select"create Ildecode(owner, PUBLIC",'public . 11 lsynonym 

[Idecode(owner, PUBLIC5 ",owner 1 Hsynonym—name Ir for 

tableowner//'. Iltable

namelldecodc(db—link,NULL%'@ Ildb~linkll 

—_

在备用服务器上安装Oracle Data Guard保护系统,通过 

Oracle日志文件的实时同步.保证系统数据的完整性,并保证 

在集群崩溃时,系统能在该备用服务器上快速启用,拓扑结构 

如图l所示 

4.2 RMAN备份策略 

1 if'om dba synonyms where owner in('PUBLIC.'SYS",'SYSTEM') 

and synonym name not like GV¥% and synonym name not like 

,V¥% and synonym name not like DBA\% escape,\ ; 

3.3客户端软件兼容性测试与完善 

由于“军卫一号”客户端软件主要是采用PowerBuilder4、 

5、6、9版本等开发而成,客户端需要安装Oracle7.1或7.3,而 

Oracle 10g不再支持8.17以下的终端连接,因此数据库升级 

前必须先解决客户端软件的兼容性问题。 

PB使用Oracle 8.17客户端时,连接参数应设置为 

DBMS=084,Servername=dbserver。但“军卫一号”大部分子系统 

配置文件中的数据库参数改成上述设置后,都会提示“不支持 

的数据库类型”,当然可以通过修改源码解决该问题。但实际 

上对PB5以上版本开发的子系统还有一个更简单的解决办 

法,那就是在终端卸载Oracle 7.1和7_3客户端,然后安装0一 

racle 8.17客户端,各子系统的配置文件保留原来的数据库连 

接参数,即DBMS=O73,Servername=@dbserver,就可以骗过系 

统.采用Oracle8.17客户端来连接Oracle 10g的服务器了。 

PB4开发的子系统采用的是Oracle7.1的客户端,无法通过上 

述方法解决数据库连接问题,只能通过修改源码解决。 

3.4数据迁移 

为了预防磁盘阵列故障,RMAN以压缩方式备份的数据 

将存储在服务器内置硬盘上。备份策略设置为:每日夜间0:00 

进行一次全数据库联机备份:每隔1 h备份~次已经生成的 

归档日志文件,已备份成功的归档日志文件将从磁盘阵列的 

磁盘组FRADG中删除:每次全库备份成功后删除在本次备 

份时间点前的所有归档日志文件和过期的备份文件集。 

5小结 

(1)升级效果。本次64位的数据库平台升级完成后,突破 

了原有32版本的4 GB服务器内存限制,并通过Oracle 10g 

RAC的负载均衡功能,系统性能得到大幅度提高。此外,通过 

Oracle 10gRAC的Failover特性,确保了单个服务器节点故障 

时业务系统的不停机继续工作。通过Oracle Data Guard技术, 

可以在集群系统逻辑错误或磁盘阵列故障时能快速启用备用 

数据库系统,确保业务系统在较短时间内恢复运转。 

(2)不支持在不同数据库实例之间进行数据库事务的透明 

切换。要实现透明切换,需要应用系统的支持,但“军卫一号”系 

统尚不支持该功能。因此,当某台服务器故障时,连接到该服务 

器上的应用程序必须重新连接数据库才能继续运行,新发起的 

Side 

连接将被自动连接到可正常工作的实例上(针对Client

我院电子病历系统与标准的“军卫一号”相关系统不太一 

致,电子病历是以二进制字段存储于Oracle数据库中 在全 

库160GB中,有80GB为电子病历,其他数据为8OGB,经测 

试,含二进制字段的表导出、导人都很慢,如果采用全库导出、 

导人,将花费较长时间,对全院医疗业务的开展造成重大影 

响。因此我们采用先迁移其他数据,后迁移电子病历的方式, 

同时采用多进程技术进行数据迁移。首先根据服务器的性能、 

表空间和表的大小.导出分成8个进程同时进行。因而在15 

min内就完成了80GB的数据导出。同理,以多进程方式将导 

文件同时进行导人操作,在1 h内完成导入操作。 

Connect Time Failover模式而言.虽然Transparent Application 

Failover模式可以实现会话和SELECT查询的透明切换,但未 

提交事务将回滚)。 

(3)升级到10g后,没有加“order by”排序的select查询, 

结果可能出现顺序紊乱的现象,如检查预约与登记子系统就 

出现了这种情况,这些需要对子系统进行更新完善.尽管对使 

用影响不大。 

[参考文献] 

张晓明.大话Oracle RAC集群高可用性备份与恢复[M].北京:人 

民邮电出版社.2009:28—74. 

如针对OUTPBILL,INFO.INPADM用户的导出进程命令为: 

exp”,/as sysdba ’file=H:\exp6.dmp owner=0UTPBILL.IN— 

FO,NPADM log=d:\sjyzkofg\exp6——exp.1og direct=y 

对应的导入进程命令为: 

imp”,/as sysdba ’file=H:\exp6.dmp full=y log:d: 

夏洪斌,陈金雄.“军卫一号”数据库从Oracle 8.17到Oracle 10g 

的升级实现【JI.医疗卫生装备,2008,29(4):40~41,44. 

徐正雄,王玲.用Ex mp实现“军卫一号”从Oraele8i到Orae]elOg 

的升级IJJ.医疗卫生装备,2009,30(1):55-56. 

Matthew Hart,Scott Jesse.Oracle Database 10g高可用性实现方 

\sjyzklog\imp6——imp.1og buffe ̄2097 1 520 commit=y 

由于采用了分用户、多进程的导人,可能造成部分过程、 

触发器等对象编译失败,因此在所有导入操作完成后,应对这 

案一运用RAC、Flashback和Data guard技术【M1.北京:清华大学 

出版社,2007:155—261. 

部分对象重新编译。通过下面语句生成待编译的SQL语句执 

行即可: 

夏杰峰,马宁.DataGuard在医院信息系统中的应用『JI.医疗设 

备信息,2007,2】(4):34—35. 

select"alter 0decode(owner,,PUBLIC ,pub1ic , ’rlob— 

ject_typell~Ildecode(owner,"PUBLIC , ,ownerll .)'[Iobject_Namell 

(收稿:2010~02—21 修回:2010—03—08) 

医疗卫生装备・2010年l0月第31卷-g 10期 Chinese Medical Equipment Journal・Vo1.31・No.10・October・2010 


本文标签: 数据库 系统 升级