军卫一号数据库

2024-07-07

军卫一号数据库(共7篇)

军卫一号数据库 篇1

1 引言

“军卫一号”系统是当前军队医院使用的主流医院管理信息系统,已经有10多年的历史,其后台采用的多为Oracle数据库系统。在系统建立之初使用的Oracle版本为Oracle7.1,该版本没有中文字符集,所以采用US7ASCII字符集存储中文信息。随着医院业务的不断发展,继续使用单字节ASCII编码,给医院信息系统的应用、开发与维护带来一系列问题,而Oracle公司在随后的版本中很快实现了多国语言的全球化支持。本文紧密结合“军卫一号”数据结构,深入研究字符集的特性,在实践中研究出一套字符集的转换方法,有效提高了“军卫一号”系统的规范性、安全性和可扩展性,为基于“军卫一号”数据库开发的各类新应用程序提供了可靠的数据保障。

2“军卫一号”字符集应用现状及弊端

“军卫一号”系统采用C/S架构,服务器端和客户端大多采用中文Windows平台(近年来部分医院已经先后将服务器平台迁移到UNIX平台上[1,2]),当客户端与服务器端采用相同的字符集时,应用系统不会出现任何问题。但是,随着数据库系统的日益庞大,新应用系统的不断开发使用,客户端数目的逐步增多,继续使用ASCII字符集带来了一系列的弊端和安全隐患,主要表现在以下几个方面:

(1)部署客户端需重新修改字符集环境变量。

由于客户端采用中文Windows系统,客户端字符集缺省环境变量为ZHS16GBK,需手工修改为ASCII字符集(一般都是采用修改注册表的方式进行)。在客户端数目日渐庞大的形势下,此项工作变得极为繁琐。

(2)在不同的应用系统间交换数据,兼容性差。

“军卫一号”系统已经与越来越多的系统进行数据交换(最典型的例子是医保程序)。这些系统基本都采用规范的中文编码,在与这些系统进行数据交换和对接过程中,字符集兼容性问题突出[3],增加了系统部署的工作量,且存在一定的安全隐患。

(3)开发基于Java的Web应用程序时,处理中文字符的复杂度增加。

基于Java的Web应用程序开发已经成为一种主流技术。Java语言在内部采用Unicode表示字符,在访问基于ASCII非中文编码的数据库时,都会有字符编码的转换,增加了编程的复杂度,且容易引起混淆[4]。

(4)采用EM管理器管理Oracle数据库难以处理中文字符。

在Oracle10g之后的版本中,Oracle提供了一个基于Web的EM管理器对数据库进行日常管理,极大地减轻了DBA的负担。然而,EM对采用ASCII码存储中文的数据库进行管理时,存在不兼容性,在Web页面中出现乱码,尽管互联网上提供了诸多补救措施,但方法比较繁琐,增加工作量。

因此,将“军卫一号”系统字符集转换为标准的中文字符编码,是当前医院DBA亟需解决的问题。

3 数据库字符集(服务器端)的转换

字符集是在安装数据库时选定的,一旦数据库创建之后,数据库的字符集是不能改变的。根据Oracle的官方说明,字符集的转换从子集到超集受支持,反之则不行。如果2种字符集不存在子集和超集的关系,字符集的转换是不受Oracle支持的[5]。但通常也可以在特定的条件下通过一些其他途径来完成字符集的转换。本文紧密结合“军卫一号”系统数据结构的特征,研究出针对性较强的从ASCII字符集到ZHS16GBK的转换方法。具体步骤如下:

3.1 准备工作

备份整个数据库,将数据库置于限制模式下(防止外部用户在转换过程中对其进行访问)

connect/as sysdba

shutdown immediate

startup mount

alter session set sql_trace=true;

alter system enable restricted session;

alter system set job_queue_processes=0;

alter system set aq_tm_processes=0;

alter database open;

3.2 字符集转换扫描

执行数据库字符集转换语句。命令如下:

alter database character set zhs16gbk;

此条命令会首先调用Oracle的字符集扫描工具Csscan,当转换条件都满足时才会执行真正的转换工作。因此,在“军卫一号”系统中首次执行该语句,将会报错而终止。

3.3 查看扫描结果日志

查看alert日志,看哪些具体的表含有clob字段。

3.4 备份特殊表

对含有club字段的表,进行exp导出,导出时注意将导出客户端的字符集环境变量更改为成ZHS16GBK(此步骤至关重要),这时Oracle会自动执行字符集的转换。

export nls_lang=american_america.zhs16gbk

exp′sys/lzck as sysdba′parfile=convert_exp.par

convert_exp.par的内容如下:

tables=SYS.METASTYLESHEET,SYS.WRI$_DBU_FEA-TURE_USAGE,

SYS.WRI$_DBU_FEATURE_METADATA,SYS.WRI$_DBU_HWM_METADATA,

SYS.WRH$_SQLTEXT,SYS.WRH$_SQL_PLAN,SYS.SCHEDULER$_EVENT_LOG,

SYS.WRI$_ADV_RATIONALE,SYS.RULE$,SYSMAN.MGMT_JOB_OUTPUT,

MDSYS.SDO_STYLES_TABLE,MDSYS.SDO_STYLES_TABLE,

MDSYS.SDO_COORD_OP_PARAM_VALS,MDSYS.SDO_XML_SCHEMAS,

MDSYS.SDO_GEOR_XMLSCHEMA_TABLE

file=convert_exp.dmp

log=convert_exp.log

在sys模式下创建这几个表的备份:

create table sdo_coord_op_param_vals as

select*from mdsys.sdo_coord_op_param_vals;

……

create table sdo_geor_xmlschema_table as

select*from mdsys.sdo_geor_xmlschema_table。

3.5 清空已备份的特殊表

使用truncate命令清空导出表中的数据;

truncate table sys.metastylesheet;

……

truncate table sysman.mgmt_job_output。

3.6 再次执行字符集转换扫描并执行转换工作

重新执行alter database character set zhs16gbk命令,如报错,返回步骤3.3,直至不再报错。

3.7 恢复清空的特殊表

重启数据库,将导出的表重新导入到数据库中。

imp′sys/lzck as sysdba′parfile=convert_imp_sys.par

imp′sys/lzck as sysdba′parfile=convert_imp_sysman.par

convert_imp_sys.par的内容如下:

fromuser=sys

touser=sys

tables=METASTYLESHEET,WRI$_DBU_FEATURE_US-AGE,

WRI$_DBU_FEATURE_METADATA,WRI$_DBU_HWM_METADATA,

WRH$_SQLTEXT,WRH$_SQL_PLAN,SCHEDULER$_EVENT_LOG,

WRI$_ADV_RATIONALE,RULE$

file=convert_exp.dmp

log=convert_imp_sys.log

ignore=y

convert_imp_sysman.par的内容如下:

fromuser=sysman

touser=sysman

tables=MGMT_JOB_OUTPUT

file=convert_exp.dmp

log=convert_imp_sysman.log

ignore=y

导入成功之后,即完成数据库的转换。

3.8 转换结束

取消数据库的限制模式,重启数据库,数据库字符集转换完毕。

4 客户端字符集更改

服务器端字符集更改后,还需要对已经设置为ASCII的客户端进行字符集修改。客户端修改字符集的方法较多[6],此处我们以修改注册表为例,简单介绍。

打开注册表编辑器(在命令行下键入regedit),依次打开HKEY_LOCAL_MACHINE→SOFTWARE→ORACLE→KEY_OraClient10g_home1路径,找到NLS_LANG,将其键值AME-RICAN_AMERICA.US7ACSII改为AMERICAN_AMERICA.ZH S16GBK。

保存后推出注册表编辑器,新字符集即刻生效。在实际应用中,由于客户端机器比较繁多,我们可以使用Windows主域控制器的域策略技术,将上述键值导出成1个Reg文件,将该文件放入域登陆脚本中,当客户端机器登陆医院域时,将自动导入新字符集的注册表键值,详细步骤这里不再赘述。

5 结束语

“军卫一号”后台数据库采用ASCII单字节字符集是一个历史问题,随着医院信息系统的日益庞大,采用这种编码带来了一系列的麻烦和问题。本文研究出了一种在“军卫一号”系统环境中数据库的字符集转换方法,使“军卫一号”数据库采用规范的中文编码ZHS16GBK来处理中文信息,提高了“军卫一号”系统的安全性、方便性和可扩展性,具有较强的推广意义。

参考文献

[1]张江涛,康雅斌,程冬梅.“军卫一号”数据库系统从Windows平台到Linux平台的移植[J].中国医院管理,2008,28(增刊):198-200.

[2]梁昌明,袁功智,秦占伟.Oracle数据库升级或迁移的方法探讨[J].医疗卫生准备,2008,29(1):35-37.

[3]刘长兴.字符集不同的Oracle数据库间交换数据的解决方法[J].中国医疗设备,2009,24(6):35-36.

[4]刘长生,谢强,丁秋林.Java应用中的汉字乱码问题分析[J].计算机技术与发展,2006,16(1):158-161.

[5]董玉梅,张亚南.Oracle数据库字符集问题解析[J].电脑知识与技术,2007(21):623-625.

[6]吴燕明,郭歌.设置环境变量修改Oracle客户端字符集[J].医疗卫生装备,2007,28(12):45-46.

军卫一号数据库 篇2

1 实现原理

从2003年开始,我们就从事“军卫一号”的网络管理工作,也一直在思考网络安全问题。经过实践,我们提出了基于Oracle的“军卫一号”数据库的网络安全监控原理。

由于Oracle在不断的版本升级更新过程中逐渐增强了数据的安全审计工作,虽然我们使用的Oracle版本并不是安全性最高的产品,但它已经内嵌了接口,可以进行二次开发使用。

1.1 审核过程

对数据库进行网络安全监控,要涉及“军卫一号”数据库中原始数据的获取、采集。根据安全策略,将数据采集到本地数据库中,然后在本地数据库中进行对比分析,形成历史数据库以及信任字典信息,依据策略,产生报警信息并进行相应操作处理。其实现原理如图1所示。

1.2 采集方法

实现“军卫一号”数据库的网络安全监控,关键是要解决数据的采集来源及方法,其来源的正确性与实时性将保证数据的有效性。通过查阅资料和试验研究,我们给出2种方法进行提取关键安全审核信息,分为主动采集和被动采集。

1.2.1 主动采集

Oracle的系统表空间提供了供审计用的进程信息表(v$session),它提供的信息较多,我们感兴趣的是如下信息:sid、serial#、username、status、osuser、machine、terminal、program、logon_time。通过让程序定时循环获取此表内容,采集到本地数据库中,就可以完成此采集任务。

1.2.2 被动采集

此方法是通过高版本Oracle数据库中的登录、登出触发器,将用户的登录信息保存到一专用表中,然后让程序定时循环取此表内容,方法更简单,获取数据更准确。但它要求最低版本必须在Oracle8.1.0以上,通常使用Oracle8.1.7i就足够了,其compatibility须设为8.1.0以上就可以使用SYS用户创建登录、登出数据库的触发器。

首先创建审核账户(如tom空间中创建审核记录表)以保存触发器产生的信息:

然后用SYS用户创建数据库的登录、登出触发器:

第二种方法产生的信息更全面、更实用,特别是可以获取机器的IP地址信息,还可以产生登出信息。这对了解账户的使用情况有更优越的特性,更利于对“军卫一号”数据库进行网络安全监控。

1.3 历史数据的形成及信任字典

通过前面的数据采集过程,我们在本地就有了历史数据表,可以随时查询登录用户的账户名称、登录时间、登出时间、使用的机器名称及IP地址、MAC地址、使用的程序信息以及人员的基本信息。同时,还可以将所有的使用程序、机器名称、IP及MAC分别形成program_dict(程序字典)、terminal_dict(终端字典),以供决策参考。

1.4 网络安全审核

将采集到的进程信息与信任字典(program_dict,terminal_dict)进行对照,就可以进行安全审核。凡是那些不在信任字典、不被信任的信息都可以快速显示出来,就能对其进行报警和相应操作(比如锁定账号、杀掉进程),还可以进行快速定位。

2 小结

安全不是目的,安全只是过程。“军卫一号”数据库的网络安全监控过程是一个长期的渐进的过程,需要我们不断地探索、思考与实践,在创新中前进,才能跟上时代的步伐。

摘要:目的:在“军卫一号”工程成功运行多年的基础上加强数据库安全审计工作,设计一套可行的数据监控程序。方法:通过安全信息数据主动与被动采集、保存采集备份数据、分析可信任字典,进行审核。结果:形成了报警信息及提出相应处置预案的网络安全监控的完整处理程序,可靠性较好。结论:该方法解决了“军卫一号”数据库的网络环境下的监控处理问题,保障了数据库的安全运行,促进了“军卫一号”系统的网络安全。

关键词:网络安全,数据库,军卫一号,监控,可信性

参考文献

[1]兰世龙,罗绯,周纬.局域网上医学数据库的安全模型[J].医疗卫生装备,2005,26(1):34-38.

[2]刘志敏.Oracle数据库应用管理解决方案[M].北京:电子工业出版社,2002.

[3]王建栋.利用Oracle事件触发器提高“军卫一号”系统的安全性[J].医疗卫生装备,2007,28(1):52-53.

[4]兰世龙,张睿.护士工作站启动流程分析[J].医疗卫生装备,2007,2(3):34-36.

军卫一号数据库 篇3

1.1 系统运行平台的几种类型

"军卫一号"信息管理系统可以运行在多种操作系统平台上, 不同的操作系统平台要对应不同版本的Oracle10g, 硬件平台的要求也不同。由于LINUX系统在医疗行业内的案例很少, 基于稳妥的原则, 不建议采用。如果用UNIX系统, 那么一般必须使用小型机。如果是PC服务器, 一般就用Windows操作系统。运行平台实际上没有优劣之分, 每种平台都有适合的用户群, 适合自己的才是最好的。对"军卫一号"系统来说, 选择可以从以下几个方面来着手。 (1) Windows还是UNIX。UNIX系统的主要优点是运行稳定可靠, 性能高, 对一般Windows系统上的病毒具有免疫力。缺点是配套的硬件、软件价格昂贵, 维护技术要求高。Windows系统的优点是相应的硬件及软件价格较低, 维护方便。主要缺点是目前针对Windows系统的病毒较多, 风险要大一些。从性能上看, 由于双核及四核英特尔至强处理器的运用, 目前高端IA架构的PC服务器已经不弱于小型机。 (2) Windows选择32位还是64位的系统。由于32位操作系统的最大寻址空间为4G, 而ORACLE数据库的性能主要取决于内存, 32位系统寻址能力[1]的不足成为其致命伤, 操作系统和应用系统向64位迁移成为发展的必然。

1.2 我院系统平台的选择

我院"军卫一号"升级前运行平台为Windows 2000 Server+Oracle 8.17, 工程师对Windows能熟练运用, 对Unix或Linux则不熟。同时医院经费预算有限, 最终确定用Windows架构的PC服务器。由于服务器硬件技术的飞速发展, 内存8g以上十分普遍, 要充分发挥服务器的性能, 还是要选择64位的系统。所以最后我院操作系统选择为Windows Server2003 Enterprise X64 Edition, 数据库为Oracle Database 10g Enterprise X64。

2 升级前的准备

2.1 硬件准备

由于较早购买的服务器一般不支持EMT64, 因而不能运行Windows Server 2003 X64版本。特别是为了应对升级过程中的意外事件, 保证升级的可逆性, 购置一台新的服务器是很有必要的。需要注意的是服务器是否支持EMT64。

2.2 系统测试

首先为了升级的安全性, 系统的压力测试和烤机必不可少。系统压力测试有专门的软件可以下载使用。然后就是"军卫一号"在新平台上各软件子系统的功能是否正常。这需要有专门的测试人员运行不同的软件模块, 据我院的运行结果, "军卫一号"的软件模块在Oracle10g上运行没问题, 但不排除别的医院系统有不同, 如果还有PB4开发的软件必须升级到PB5以上版本再重新编译调试。

2.3 客户端升级

服务器数据库升级到Oracle10g后, 不再支持Oracle8以下版本的客户端, 如果是Oracle8以下版本的客户端都需要升级。这部分的工作量还是比较大的, 因为很多医院的客户计算机都在500台以上。

2.4 升级模拟演练

由于医院HIS系统在医院的重要意义, 为了保证升级成功尽量缩短系统停机时间, 必须多次进行升级演练。针对每次演练中出现的问题, 不断修正升级方案, 直至演练完全达到预期效果[2,3]。

3 升级切换步骤

在升级前的准备工作都完成后, 可选择适当的时间点进行系统切换。在系统切换前, 为了减少当天的工作量, 应把新服务器的Windows server 2003操作系统及Oracle10g数据库都安装好。同时为了减少系统停机时间, 原数据库主服务器应做一次数据转储。以下为系统切换操作步骤。

3.1 建立表空间

建立"军卫一号"系统的TSP_COMM等24个表空间, 建表空间的语句样例如[4]:

create tablespace tsp_comm.datafile'D:oracleproduct10.2.0oradataORCLAPACCT.DBF'size 50M autoextend on next 8M extent management local segment space management auto nologging;

3.2 建立用户

在目标数据库中创建各个用户 (我院为3051个) , 并赋以迁移时所需的权限。由于用户数量众多, 需要从系统中提取自动生成建表的SQL语句。语句样例如:

3.3 在目标数据库中创建用户表

系统用户建好后, 就可以建立各用户所属的表了。建表的语句方法较多, 可以直接从ORACLE系统中生成, 也可用PLSQL Developer等工具软件通过比较两个库的结构来生成。我院原有"军卫一号"系统安装光盘中有相应的建表工具[4], 同时在后续的系统发展中, 我院坚持了严格的文档管理制度, 表结构的变更都有记录和详细的SQL执行语句, 所以在这次升级中就直接用现成的建表SQL语句执行建表操作。建表时有如下几个字段需特别注意。

3.4 数据迁移

为了加快数据迁移速度, 同时为了保证系统切换的可控性, 采取了在两个数据库之间建立db link直接进行数据读取写入的方法。在实施的过程中应充分利用Windows Server2003的多任务特性, 建立多个批处理文件, 并行执行分别迁移不同用户下的表。该方法的特点是快。我院作为1100张床位的综合性三甲教学医院, 数据迁移仅10分钟就完成了, 而且无任何数据丢失。

3.5 建立各类数据库对象

为在写入数据时避免数据之间的相互关联导致写入速度降低, 选择在数据写入完成后再建立VIEWS, SEQUENCE, PROCEDURE, PACKAGE, FUNCTION, PACKAGE BODY, TRIGGER, TYPE, TYPE BODY等各类数据库对象。这些对象数量较为有限, 建立所用的SQL语句可以用PLSQL Developer工具软件直接生成。在实施过程中, 发现"军卫一号"系统中有个别PACKAGE BODY是加密的, 无法从ORACLE直接生成, 这时便需要联系该PACKAGE BODY的开发人员, 提供该PACKAGE BODY的安装代码。在立完成后, 所有的数据库对象都要重新编译, 并检查是否还有无效对象。

3.6 调整服务器参数

以上工作完成后, 数据库迁移已经基本完成, 然后需要将参数修改回投产运行环境所需的配置, 保证系统运行的效率。以我院8G内存的数据库服务器为例, 主要参数如下[4,5]:

最后将数据库更改回归档模式, 将目标服务器IP地址改为原数据库主服务器IP地址后, 数据库关闭再重新打开, 重新启动TNS LISTENER服务, 通知各业务部门可以正常使用系统, 至此数据库迁移顺利完成。

4 讨论

4.1 数据导入可有不同的途径

传统上"军卫一号"数据库的升级都采用EXP/IMP工具进行导入, 而且该方法在Oracle7到Oracle8的升级中, 很多医院都有成功的案例, 但Oracle8到Oracle10g的升级, 而且是32位系统到64位系统的升级, 很少有采用EXP/IMP的报道。不可否认, 从理论上EXP/IMP完全可以实现系统数据包括各种对象的导入, 但其主要问题是用户基本上无法参与和干预其导入过程。在本案例中采用建立db link然后进行迁移是建立在多次模拟的基础上, 为了迁移节奏可控和节约停机时间, 但对数据库管理员的技术水平要求较高。

4.2 系统切换的应急措施准备

由于医院业务系统具有7*24小时无法中断的特点, 数据库系统升级切换的风险就非常高, 所以做好各种情况发生时的应急预案十分必要。信息科提出建议应急预案, 由院机关组织各部门参与, 做好各种情况发生时的应对准备措施。在时间点的选择上建议周五半夜开始切换, 这样周六凌晨急诊和各护士站就可展开使用, 有问题可以马上解决。周六上午一般各业务部门子系统都会展开使用, 但门诊病人不会太多, 在有问题发生时处理起来也不至于过于慌乱, 周日又可以再对系统进行完善加固[2]。

4.3 系统切换后的安全备份策略

在Oracle8系统中的安全备份策略到Oracle10g中不一定能用, 而且Oracle10g还有很多新的功能。系统升级完成后, 采取了3个层面的安全备份策略。 (1) 利用RMAN的功能, 实现每天凌晨1点定时在线全备; (2) 建立备用服务器, 利用DATAGUARD技术, 实现主服务器和备用服务器的数据实时同步; (3) 开发小型外挂软件, 以实现LOG文件自动备份到异地服务器, 实现异地容灾。

"军卫一号"数据库的升级是个系统工程, 从开始酝酿升级到最后升级成功前后经历了半年的时间, 中间也碰到了一些难题, 但由于操作系统和数据库选用的版本都是推出较长时间的稳定版本, 问题都是可以解决的。最终升级的效果很好, 特别是64位平台的建立, 满足了今后相当长一段时间内硬件升级的需要。系统升级完成后, 运行稳定, 从未宕机, 性能大幅提升。我院HIS系统除LIS外, 所有的子系统全部基于"军卫一号"Oracle10g主服务器, 而且LIS服务器还与主服务器实现实时连接, 一般情况下有900个左右会话。但服务器CPU利用率一般在3%以下, 最高峰是5%, 数据库的命中率在99.9%以上。

摘要:近年来, 随着医院信息化的发展, 医院信息系统的规模越来越大, 数据库服务器负荷日益加重, 同时服务器硬件性能提高很快, 将数据库系统从32位升级到64位成为解决这个问题的重要途径。本文就运行平台的选择进行了分析, 介绍了升级的具体实施, 并就有关问题进行了讨论。

关键词:“军卫一号”,数据库,升级

参考文献

[1]胡兆阳, 谢余强, 舒辉.Windows下堆内存管理机制研究[J].计算机工程与应用, 2005, 17 (19) :59-64.

[2]曹丽, 刘刚.医院信息系统ORACLE数据库升级解决方案[J].医疗设备信息, 2007, 22 (7) :30-31.

[3]张帆, 张红君, 刘聪."军字一号"ORACLE数据库升级的实现[J].解放军医院管理杂志, 2007, 14 (7) :522-523.

[4]刘志敏.Oracle数据库应用管理解决方案[M].北京:电子工业出版社, 2002.

军卫一号数据库 篇4

1 故障一

Oracle10g数据库中的OEM (oracle enterprise manager)是一个位于数据库服务器上的HTTP服务器(称为DB控制台)[1],它为数据库管理员提供了一个高效的图形管理界面,足够完成大多数DBA任务。我们在进行数据库移机时常常会发生控制台无法打开的故障。有时数据库刚安装好的时候控制台可以打开,但在之后对数据库、控制台的修改操作中也会造成控制台不正常的问题。

1.1 故障现象

我单位数据库为Oracle 10.1,为方便调试程序,冷备份了主服务器上的数据库数据,拷贝至备份服务器,备份服务器和主服务器软硬件的配置完全一致,拷贝数据库到备份服务器,重新启动数据库后,数据库能正常启动,客户端也能正常连接,但登录EM后,无法正常显示EM的界面,导致无法对数据库进行各项管理。

1.2 故障分析与排除

经过仔细分析,可排除如下常见原因:(1)网络连接是否正常;(2)计算机环境是否变化,如计算机名、IP地址、备份机数据库用户属性等。

经反复试验,我们采用如下2种方法修复了EM管理器。

1.2.1 方法一

数据库不改变,只修改用户和配置文件:

第一步,停止dbconsole服务,修改sysman用户和dbsnmp用户的密码并解锁用户。

第二步,修改与sysman用户和dbsnmp用户相关的dbconsole的参数文件中的连接密码。

找到sysman用户对应的(host)_(sid)/sysman/config/emoms.properties文件,修改其中Oracle.sysman.eml.mntr.emdRepPwd=Oracle2011,修改Oracle.sysman.eml.mntr.emdRepPwdEncrypted=FALSE。

找到dbsnmp用户对应的(host)_(sid)/sysman/emd/targets.xml文件,修改其中的Value和ENCRYPTED的内容:

第三步,重启dbconsole。

此时可以正常访问EM控制台。以上第二步中的2个文件内的sysman和dbsnmp用户对应的密码已被系统自动重新加密。

1.2.2 方法二

使用Oracle10g的高速导入/导出工具———data pump数据泵功能做整个数据库的迁移,不会导致控制台故障[2]。

重新从主服务器上打开的数据库中用数据泵导出(expdp)一份数据,再导入(impdp)到目标机器中。此功能可以跨系统平台且速度非常快,使用数据泵程序启动一个导出或导入任务后,任务就在数据库服务器后台运行。运行过程如下:

第一步,在数据源服务器上,通过Oracle的目录对象,指定临时存放转储文件的位置,并授权给用户,此目录可以在以后的导出任务中继续使用。

第二步,使用导出命令导出整个数据库:

第三步,在目标服务器上(目录创建同第一步),使用导入命令导入整个数据库的数据:

在一台普通工作站机器上约1 h后,22 GB的数据全部导入,数据库可以打开使用,导出导入性能比在直接模式下(exp/imp)提高了5倍以上[3],重要的是EM控制台完全正常,相比冷备份转移数据,此方式更具有如下优势:源数据库不用关闭,可以跨多个平台,不会因环境变化而造成控制台无法使用的问题,耗时差距也不算太大。

2 故障二

2.1 故障现象

我单位数据库从Oracle 8.1升级为Oracle 10.1后,由于数据库有表空间的本地管理功能,大大减少了管理员的工作量。正常使用1 a后,有一天做热备份时突然提示:剩余磁盘空间不足。查看数据库已经比4 d前增大了21 GB,仔细观察,发现临时表空间数据文件TEMP DBF突然增大到22 GB。此状况虽不影响正常应用,但会影响备份时间或数据库响应速度等。

2.2 故障分析与排除

试用过shrink, deallocate unused (keep 0)等,都不能释放表空间。因为是临时表空间,最简单的办法应该是替换法。由于系统表空间为本地管理,不能用作缺省临时存储表空间,但实际要求必须至少有1个缺省临时表空间[2],所以应该新建临时表空间。实现步骤如下:

(1)建立另外一个临时表空间;

(2)将新建表空间设为默认的临时表空间;

(3)删除旧的临时表空间及其数据文件。

具体语句如下:

据此结果,我们挑选晚上应用比较少的时间段,在联机服务器上数据库正常打开的情况下执行以上步骤,一切顺利,很快完成。

上面修改了默认表空间,联动所有普通用户的默认表空间一起做出修改,可以使用下面语句查询,用户的默认临时表空间都已自动变更为新的临时表空间:

(1)先查询临时表空间的空间号;

(2)再查询用户对应的临时表空间号,type#=1的为用户,type#=2的为角色。

参考文献

[1]任树华.Oracle 10g应用指导与案例精讲[M].北京:机械工业出版社, 2006.

[2]刘志敏.“军字一号”数据库临时表空间的管理与维护[J].中国数字医学, 2010 (3) :70-72.

军卫一号数据库 篇5

“军卫一号”系统是一套功能强大的医院信息系统,系统中的数据表不仅数量多,而且数据结构比较复杂。医院信息工程人员不可能记得住这些数据表的具体结构和说明,在实际工作中要经常查阅数据结构手册,Word版的手册有200多页,查找和浏览相关内容都不是很方便。同时,随着医院信息化的发展,客户端不断增加和更新,以及新子系统的开发,“军卫一号”系统数据结构变得越来越复杂,不仅对原来的数据表进行修改扩充,而且要创建新的数据表,甚至建立新的表空间。为了使数据结构手册能与实际的数据库结构相配套,就需要对手册进行维护。但是多名技术人员对手册进行维护时,很难与他人共享信息,更难以保证各自手册内容互相一致,手册和实际的数据库结构误差会越来越大。所以,为了方便医院信息工程人员对数据结构说明的查询和更新,保证数据结构说明的一致性,笔者开发了“军卫一号”数据结构手册查询系统,实现了《“军卫一号”医院信息系统数据结构手册》(以下简称《手册》)的网络查询浏览和更新维护。

2 开发环境和工具

本系统依托Windows XP Professional和操作系统组件Internet信息服务(IIS)实现。IIS是一种强大的Web服务器,可提供高度可靠、易管理和可伸缩的Web应用架构,同时IIS适应性极高,系统资源的消耗也很少,它的安装、管理和配置都相当简单,支持包含ASP、JAVA、Vbscript语言的页面。因为本系统各项功能主要依靠ASP动态网页来实现[1],所以必须有IIS的支持。

数据库采用Access数据库,用来存储和管理所需要的数据。鉴于本系统总数据量不大,数据更新比较少,系统使用者只是特定的少量固定用户,而且是个相对独立的系统,考虑程序设计和数据维护的简单方便,所以采用了Access数据库[2]。

网页制作工具采用Frontpage。Frontpage是专门的网页制作工具。本系统主要用它来编写ASP动态网页,虽然功能不很强大,但是用来实现小型系统已经完全足够。

3 数据库设计

在Access数据库sjjg.mdb中建立一个数据表,表名称为“数据结构手册”,把《手册》中每个数据表的结构说明作为一条记录存储于Access数据库中,客户端通过ASP动态网页实现对数据表说明的查找、浏览和维护。数据表“数据结构手册”结构见表1。

4 系统实现

4.1 系统界面

系统整体界面见图1。系统用框架结构实现,分为3个部分:(1)Header,顶部框架,用于显示标题;(2)Left,左边框架,按顺序逐个列出《手册》中的各个类别,窗口最下端为数据表名称模糊查询的输入框及按钮;(3)Right,右边框架,用来显示相应类别的数据表名称或者符合模糊查询结果的数据表名称。点击右边框架中的数据表名称,《手册》数据表的具体说明以独立窗口的形式显示,见图2。

4.2 系统查询的实现

4.2.1 连接数据库

系统各Web页面的功能要连接Access数据库才能完成,在页面顶部首先要连接数据库sjjg.mdb,代码如下[3]:

4.2.2 Left框架的实现

Left框架内容相对固定,依次列出了《手册》中的数据表的各个大类,各类别连接代码如下:

Left框架底部提供了数据表名称模糊查询功能,用户只需输入数据表名称的部分字符,就能快速检索到符合条件的目标。模糊查询输入框代码如下:

4.2.2 Right框架的实现

Right框架为动态子窗口,显示相应Left框架各类别或者符合模糊查询条件的数据表名称。

按类别查询主要代码如下:

模糊查询的时候语句与按类别查询部分相同,不同部分代码为:

4.2.3 具体说明窗口的实现

该窗口见图2,用来显示《手册》单个数据表的具体结构详细说明,风格和说明的格式与Word版《手册》一致。主要代码如下:

4.3 系统的数据维护

4.3.1 添加记录

2种情况需要用到添加记录功能:(1)查询系统创建时,需要把《手册》内容逐条录入,储存到Access数据库中;(2)“军卫一号”系统中建立新的数据表时,录入新增数据表的具体结构说明,以保持与实际数据库结构的一致。通过点击“图1”中“添加记录”按钮进入,界面见图3。在各输入框中添入相应内容,按确定完成录入操作。这里需要说明的是:“类别”和“名称”输入框直接复制《手册》中内容即可,而“内容”输入框中需要输入的结构说明内容主要是Word表格格式的,直接复制这些表格到输入框中粘贴,表格会全部丢失,因此要先复制这些Word表格粘贴到Frontpage“普通”视图,转换成网页格式的表格,再点击Frontpage“HTML”视图,这样表格就可以转换成文本形式来储存了(用写字板打开《手册》,进行转换后的代码会比较简短),复制代码粘贴到“内容”输入框中即可,因为这些代码现在都是普通的Html格式的,查询出这些代码在网页上显示的时候,能够完整的保持原来的表格结构。

4.3.2 记录修改

“军卫一号”系统对原有的数据表进行调整时,如增加字段或对原字段进行调整等,就需要修改数据表结构说明的相应内容,通过点击相应的数据表的具体说明窗口(图2中的“我要维护”)进入,界面见图3。不同的是,添加记录时各输入框为空白的,而对原有记录维护时,窗口将显示记录的原有内容。

数据维护部分的主要代码如下:

5 结束语

通过网络以Web页形式查询浏览《手册》,不但方便快捷,节省了医院信息工程人员的时间,提高了工作效率,而且统一了医院“军卫一号”系统的数据结构说明,有助于工程人员平时的数据库维护工作,对工程人员进行信息系统的后续开发提供了一定的帮助。

参考文献

[1]张华贵.用ASP技术实现国际疾病编码(ICD10)网络查询系统[J].医疗卫生装备,2009,30(1):57-61.

[2]杨常乐,章娟.基于ACCESS中间库平台的摆药查询[J].医疗卫生装备,2006,27(3):75-76.

军卫一号数据库 篇6

解放军451医院2001年开始运行“军卫一号”医院管理系统。2011年我院更换数据库服务器、前台客户机,决定“军卫一号”数据库从Oracle7.3升级到Oracle10g,同时对数据结构从老药品结构升级到新药品结构,疾病编码由ICD9升级到ICD10,补充军队医改持卡就医所需数据结构,HIS客户端软件相应改为在Oracle10g数据库中运行的最新版本。采用数据库自带的EXP/IMP工具[1],实现数据库跨平台、跨版本升级,数据结构采用复制已做过升级操作的其他医院数据库结构,相应需要升级部分的数据进行手工初始化,其他数据全部继承原Oracle7.3数据库数据[2]。

2 现状分析

我院为二级甲等医院。医院信息系统采用“军卫一号”HIS,2001年9月开始运行,现使用数据库服务器为惠普LH2000机型,数据总线为32位,256 MB内存、10 GB硬盘,操作系统为Windows NT 4.0 Server。数据库采用Oracle7.3,数据结构为老药品结构,自运行以来未做过升级和补充;客户机操作系统和数据库客户端均分别为Windows 98和Oracle7.3。2011年网络升级改造,新采购数据库服务器为IBM 3650 M3的64位机,8 GB内存、800 GB磁盘阵列,预装64位操作系统Windows2003 Server、Oracle10g数据库;客户机全部更换为联想品牌的M7150型,预装Windows XP和Oracle8.1.7客户端[3]。

3 升级过程介绍

3.1 安装服务器操作系统

将6块HP 146 GB的SAT硬盘配置成RAID5,然后按系统提示安装Windows 2003 Enterprise Server x64操作系统。因医院规模不大,不采用域模式。

3.2 安装Oracle数据库

首先,安装Oracle10.2.0.1Enterprise x64 for Windows数据库软件,再装数据库补丁程序使数据库版本升级到Oracle10.2.0.4,然后再利用Oracle的DBCA工具创建数据库,实例名和字符集保持与源数据库配置一样:ORCL/AMERI-CAN_AMERICA.US7ASCII。然后修改数据库配置参数:最大角色、最大线程数。启动数据库,进行简单连接测试,查看sqlplus、em等工具是否正常[4]。此时数据库dba_user表中有17个用户,记录下用户名。

3.3 新药品结构初始化的准备

利用美国Quest Software公司的TOAD for Oracle软件来帮助数据库按用户模式升级。TOAD(tool of oracle application developer)软件是一种专业化、图形化的开发、测试、管理工具,可以大大提高数据库开发和管理人员的工作效率,为Oracle专业人员广泛采用。

(1)表空间和数据文件的准备。运行TOAD软件用system用户在已做过升级操作的其他医院Oracle10g数据库中,点击菜单栏的database/export/generate database script/objects and options选项,选中tablespaces选项,点击工具栏中的run图标执行生成命令,然后点击弹出对话框下端save to file按钮,指定路径和文件名保存,如:d:create_tablespac.sql。用Windows系统自带的记事本打开d:create_tablespac.sql,删除创建数据库时已经建好的5个系统表空间,数据文件存放路径根据需要进行调整,保存修改。

(2)数据库所有者Owner的准备[5]。在其他医院Oracle10g数据库中用sql语句select Owner from dba_segments group by Owner提取出数据库所有者Owner共31个,再使用EXP工具将这些Owner从该数据库中卸出空数据库结构:exp system/password file=e:10g_culture.dmp log=e:10g_culture.log Owner=[共31个Owner,每个用逗号隔开],rows=n direct=y[6]。

(3)创建用户User的准备。用TOAD软件查询Oracle7.3数据库中用户信息,方法同查询表空间一样,只是在查询中先择User选项,保存为create_user.sql并用记事本打开,删除系统用户和与31个Owner重名的用户,将每个用户默认临时表空间全部改为TEMP表空间,保存。

(4)创建角色Role的准备。用TOAD软件查询其他医院Oracle10g数据库中Role信息,方法同查询表空间一样,只是在查询中先择Role选项,并保存为create_role.sql。

(5)授权信息的准备。在其他医院Oracle10g数据库中使用sql语句:SELECT'GRANT'||GRANTED_ROLE||'TO'||GRANTEE||';'FROM DBA_ROLE_PRIVS WHERE GRANTEELIKE'ROLE%';生成create_grant.sql。

(6)创建同义词的准备。在其他医院Oracle10g数据库中使用sql语句:SELECT'Create public synonym'||synonym_name||'for'||table_Owner||'.'||table_name||';'FROM dba_synonyms WHERE Owner='PUBLIC'AND TABLE_OwnerIN(共31个Owner,每个用户用逗号隔开并加单引号);并保存为create_synonym.sql。

(7)从Oracle7.3数据库中使用EXP工具全库卸出生成exp_73.dmp文件。

(8)在新服务器中创建新药品结构的HIS数据库[7]。使用sql工具,依次执行create_tablespac.sql创建表空间及数据文件、create_role.sql创建角色、create_user.sql创建用户、create_grant.sql创建授权、create_synonym.sql创建同义词,再使用IMP工具执行10g_culture.dmp创建新药品结构HIS数据库,最后执行exp_73.dmp装入Oracle7.3数据库中数据。至此创建新药品结构的HIS完成。可以看出,库结构、Owner、Role、授权、同义词等来自已升级过的Oracle10g数据库,用户User和原始数据来自Oracle7.3数据库。这个库中新药品结构的表是空的,新老药品共用的表中是有老药品数据的,老药品结构的表是有数据的。装入Oracle7.3数据库中数据是为了进行新药品结构初始化时利用现有数据进行操作。

3.4 新药品数据初始化

(1)删除新、老药品结构共用表中老药品信息,包括诊疗项目字典、诊疗项目名称字典、价表名称字典、诊疗项目与价表对照字典。

(2)建立有关新药品结构的用户组,在工作人员管理程序、用户管理程序中进行新药品管理用户信息的建立。

(3)进入新版的药库管理系统进行新药品信息字典录入。按新编码(10位)将所有药品重新编码,以最小单位录入,厂家名称简写不超过5个汉字。根据医院实际情况,对下列字典进行录入:药品摆药类别字典、药品处方属性字典、药品库存单位库房字典、库存单位字典、特殊项目排斥字典、特殊项目字典。

(4)用工具及sql进行药品、价表及诊疗项目表间的数据一致性测试,在价表管理程序及公共字典表中生成输入法文件。为测试可建立部分药品库存[8]。

(5)对下列前台和新药品相关程序进行试运行:药库管理、中心摆药、门诊药房、医生站、护士站、门诊收费、住院收费、后台划价、用户管理等。根据测试进行数据修改完善。

(6)将所有新药品初始化有关的表全部用EXP工具卸出,包括药品、疾病、手术、工作人员字典、应用程序授权、价表、诊疗项目等,此时药品库存数应为0。用TOAD工具备份出所有用户,生成最新的创建用户文件。

3.5 数据库和新药品结构正式升级切换

(1)将新服务器格式化重新安装操作系统、Oracle10g数据库,然后重复进行3.3(8)的操作,使用最新的创建用户文件,其他不变。

(2)正式切换前在Oracle7.3数据库中进行后台划价、日统计、月统计、对住院患者进行中结、停止所有药品长期医嘱并摆2 d药、打印各药房药品库存数、停止价表中所有药品的价格。

(3)正式切换开始,断开所有客户端与在用数据库的链接,用EXP工具对Oracle7.3数据库进行全库卸出生成ora73_exp.dmp并传到新服务器指定目录下,然后拔除网线。

(4)在新服务器Oracle10g数据库中用IMP工具按31个Owner装入ora73_exp.dmp完成原始数据切换;删除新、老药品结构共用表中数据;用IMP工具装入步骤3.4(6)生成的新药品初始化数据new_drug_data.dmp;启动所有药品有关的处发器。

(5)新服务器的IP地址更改为原在用服务器IP,配置数据库别名与原在用数据库别名相同,更新后台划价、后台日统计程序,更新在用输入法文件,重启服务器和数据库后进行药品库存量的手工录入,各医生站重建套餐医嘱。至此,数据库已完成切换。医院信息系统恢复正常工作。

4 结语

本文介绍的是“军卫一号”服务器操作系统、数据库版本、数据结构、原始数据、新初始化数据一同升级的方法,步骤多、工作量大、多家单位合作完成。重点是要前期的测试工作细致,数据初始化准确,协调组织得力。经过实践成功地达到了预期目标。

参考文献

[1]梁昌明,袁功智,秦占伟,等.Oracle数据库升级或迁移的方法探讨[J].医疗卫生装备,2008,29(1):35-37.

[2]王徐东,杨希武.数据仓库与数据挖掘在医院信息系统中的应用[J].医疗卫生装备,2008,29(8):47-49.

[3]夏洪斌,陈金雄,陈薇薇.“军卫一号”数据库从Oracle8.17到OraclelOg的升级实现[J].医疗卫生装备,2008,29(4):40-44.

[4]徐正雄,王玲,乔静,等.用Exp/Imp实现“军卫一号”从Oracle8i升级到Oraclel0g的升级[J].医疗卫生装备,2009,30(1):55-56.

[5]肖飞,黄正东,王琳.当代信息技术条件下数据库安全技术研究[J].医疗卫生装备,2010,31(10):51-54.

[6]柳明.医院信息系统安全策略探讨[J].医疗卫生装备,2011,32(3):47-51.

[7]郭平彩,张庆丰,朱有存.“军卫一号”实现Oracle8i到Oracle10g升级方法[J].医疗卫生装备,2011,32(3):52-54.

军卫一号数据库 篇7

(1)客户端的增多对后台数据库的性能提出了更高的要求,需要对内存参数进行恰当的调整;

(2)用户一旦对数据进行了误操作,如误删除某条记录等,需要立即进行恢复;

(3)新上线的社会医疗保险系统采用ZHS16GBK中文字符集,而“军卫一号”数据库系统采用US7ASCII英文字符集,虽然通过编程的方法可以进行字符集转换,但程序使用过程中仍经常会出现乱码的情况,为了长远的需要,最好将“军卫一号”数据库的字符集修改为简体中文字符集。

我院“军卫一号”数据库系统为Oracle8.1.7.4,操作系统为Windows Server 2000,对于上述问题不是不能解决,但需要对Oracle8i的知识有深入的了解。目前,Oralce10g的推出已有一段时间,业界有关Oracle10g的应用已日益成熟,且Oralce10g提供了许多新的特性,如自动化实例调整、自动化内存调整、闪回(Flashback)以及修改字符集的内部指令等,这些新特性完全可以应对我院“军卫一号”数据库管理所面临的新挑战。因此,有必要对我院“军卫一号”数据库系统进行升级。

1 升级方法概述

将Oracle8i升级为Oracle10g的方法很多,利用Oracle的Exp/Imp以及Toad工具实现数据迁移[1];采用建立数据库链接的方法实现数据迁移[2]。这两种方法虽然最终都能够实现数据库的升级,但由于“军卫一号”系统数据量很大,数据迁移耗费的时间很长,从而造成系统切换的时间很长。

除上述方法以外,Oracle也提供了其它升级途径,比如采用Database Upgrade Assistant升级工具,以及利用升级脚本进行手工升级等。采用手工升级可以明确的察觉升级过程中出现的错误,以采取应对措施,便于对升级过程进行有效的控制,而且升级速度较前面介绍的数据迁移的方法要快。因此,本文就手工升级方法进行详细的介绍。

需要注意的是,对“军卫一号”数据库系统进行升级是一个复杂的过程,它关系着整个医院信息系统的正常运行。因此,有必要在备用服务器中对升级过程进行反复实验,待实验成功后,才可对生产数据库进行升级。

2 升级的具体步骤

目标数据库版本为Oralce 10.2.0.1,以下简称为Oracle10g,现有数据库版本为Oracle 8.1.7.4,以下简称为Oracle8i。

(1)如果待升级数据库版本为Oracle 8.1.7.4,则略去此步,否则,安装待升级数据库对应的Patch,将待升级数据库先升级到Oralce 8.1.7.4,有关安装Patch的方法,请参考有关说明,此处不再赘述。

(2)在Windows Server 2000操作系统中创建一个新目录,在该目录下全新安装Oracle10g数据库,并且不安装任何启动数据库。

(3)将Oracle10g目录ORACLE_HOME/rdbms/admin下的utlu102i.sql文件拷贝出至另一目录,并切换至该目录,用数据库管理员身份登录Oracle8i数据库的SQL*Plus,执行该脚本(该脚本又称为升级前信息工具)并查看脚本的执行结果。

(4)备份原Oracle8i数据库。

(5)将原Oracle8i数据库中的参数文件、口令文件拷贝至Oracle10g数据库的相应目录下。拷贝参数文件后,将该参数文件重命名为initsid.ora。(在Oracle8i数据库中,参数文件名为init.ora,在Oracle10g数据库中,参数文件名为initsid.ora)。

(6)调整Oracle10g数据库中的参数文件initsid.ora,对照(3)步中升级前信息工具的执行结果,在initsid.ora文件中将该结果中标记为“Obsolete”的参数删除,将标记为“Deprecated”的参数的参数值进行调整,调整范围参考该结果中提供的参考值,并增加该结果中提示需增加的参数。同时参照该结果调整其它需要调整的方面,比如使某些小的回滚段离线,并创建一个更大的回滚段以便于升级过程中使用该回滚段等。

(7)在cmd(控制台命令行)下,关闭Oracle8i数据库,删除该数据库实例,并创建新的Oracle10g数据库实例。设“军卫一号”数据库系统的实例名为“orcl”,执行:

使用Oracle10g目录下的参数文件创建新的实例:

(8)在cmd下切换至Oracle10g的ORACLE_HOME/rdbms/admin目录,启动Oracle10g的SQL*Plus,以数据库管理员(sysdba)身份连接至数据库,执行:

执行:

(9)执行SQL>@catupgrd.sql进行数据库系统升级。

(10)执行SQL>@utlu102s.sql检验升级结果。

(12)执行SQL>@olstrig.sql以重新创建触发器。

(13)执行SQL>@utlrp.sql以重新编译过程函数等。

(14)退出SQL*Plus,升级结束。

3 升级后的步骤

(1)安装Oracle10g中Web版的OEM(Oracle企业管理器),在cmd下执行:

安装成功后通过http://localhost:1158/em/访问OEM。

(2)启动iSQL*Plus服务,在cmd下执行:

C:isqlplusctl start以启动服务,然后可由http://localhost:5560/isqlplus/访问iSQL*Plus。

(3)将原“军卫一号”数据库采用的英文字符集AMERICAN_AMERICA.US7ASCII修改为简体中文字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK,启动Oracle10g的SQL*Plus,执行:

(4)修改每个Oracle客户端字符集为简体中文字符集,避免产生乱码。

(5)重新编译因升级而失效的存储过程。

4 小结

本文介绍了将Oracle8i版本的“军卫一号”数据库手工升级为Oracle10g的方法。该方法的最大优点是升级速度快,缩短了新旧系统切换的时间。经过严密测试,最终数据库由Oracle 8.1.7.4成功升级为Oracle 10.2.0.1,并且将“军卫一号”数据库的字符集成功修改为简体中文字符集。系统升级后,运行平稳。

参考文献

[1]徐正雄,王玲,乔静,等.用Exp/Imp实现“军卫一号”从Oracle8i到Orade10g的升级[J].医疗卫生装备,2009,30(1):55-56.

[2]夏洪斌,陈金雄,陈薇薇.“军卫一号”数据库从Oracle8.17到Oracle10g的升级实现[J].医疗卫生装备,2008,29(4):40-41.

[3]刘志敏,等.利用数据库分布技术改善HIS的应用性能[J].中国医疗设备,2008(6):25-26.

[4]Kathy Rich,Viv Schupmann.Oracle Database Upgrade Guide10g Release2(10.2)[DB/OL].(2008-01-01)[2009-06-01].http://download.oracle.com/docs/cd/B19306_01/server.102/b14238/toc.htm.

上一篇:基地稳定下一篇:后进生的转化之道