医院信息系统中Oracle数据库运维管理

时间:2022-10-25 06:50:03

医院信息系统中Oracle数据库运维管理

摘要:随着Oracle数据库在医疗信息系统中的广泛应用,数据库的运维工作对于系统可靠性来说越来越重要。本文结合医院信息系统的特点,针对数据库系统参数设定、表空间管理以及统计信息维护等内容进行分析,优化数据库性能,确保数据库系统的正常运行。

关键词:医疗信息系统 Oracle数据库 运维 优化

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9416(2014)05-0116-01

1 数据库运维概述

随着Oracle数据库在医疗信息系统中的广泛应用,数据库上面的业务越来越多、数据量越来越大,其性能问题也随之而来[1]。Oracle数据库的性能优化是数据库运维管理中重要的组成部分,通过调整业务系统的SQL语句、主机相关参数以及数据库相关设置可以提升数据库系能。

但是对大幅度的调整优化来说,在不同阶段进行会有明显的成本差别。医院使用的各项信息系统除少部分医院采用自主研发设计,大部分是应用不同公司的产品,因此数据库的优化及运维工作主要也是在系统上线后这个阶段进行。此时的性能优化与调整的目标是使数据库系统的吞吐量尽可能地增加,同时尽可能少地通过访问磁盘来获取需要的数据。

2 系统参数调整

数据库系统参数是Oracle数据库系统的重要组成部分,它决定了数据库SGA、PGA等内存区域的大小,重做日志大小、最大连接会话数、字符集等至关重要的配置信息[2]。下面将详细介绍如何调整数据库实例。

2.1 内存空间分配

Oracle数据库实例可将系统信息存储在内存和磁盘上,由于内存的读取速度要远远高于磁盘。因此,尽可能多地将信息缓存在内存中可以大大提高系统处理速度。通过设置MEMERY_TARGET值,即可启用自动内存管理。数据库会自动地根据该值作为整个数据库实例所能使用的最大内存空间,并按照各内存区的工作负荷来分配各工作区的内存容量,无需DBA按照传统的经验方式去为每一个工作区手工分配内存容量,诸如:SGA_TARGET、SHARED_PO

OL_SIZE、DB_CACHE_SIZE等值都无需再配置。

2.2 撤销表空间的配置

Oracle数据库用撤销表空间来实现数据库的读一致性、数据库恢复以及回滚等操作。Oracle提供了自动管理撤销表空间的管理方式,此种方式能完全自动地管理撤销数据,透明地创建和管理撤销段,显著提升撤销表空间的管理效率。

2.3 在线重做日志大小的设置

数据库实例的写入与归档进程都与在线重做日志的大小有关。通常,适当地增大在线重做日志文件可以提升系统性能[3]。虽然联机重做日志大小的大小不会直接影响日志写进程的性能,但是却会影响数据写入进程和检查点进程的效率。系统自动判断的最佳在线重做日志大小可以通过查询v$instance_recovery视图的 optimal_logfile_size列获得。

3 数据库表空间管理

3.1 表空间基本概念

一个Oracle数据库能够拥有多个表空间,而一个表空间只能对应于一个或多个物理的数据文件。表空间分为四种常用类型:一是系统表空间,存放数据字典及其数据;二是存放用户数据的表空间主要用来存储用户数据(表、索引);三是临时表空间,用于存放临时数据;四是回退表空间,用于数据库的并发存取控制,保证数据库的一致性。

3.2 表空间日常维护

DBA定期对不同类型的表空间使用情况进行检查,是避免数据库错误的有效方法。当系统使用一段时间之后,表空间的连续块被多次的修改与删除等操作后出现了许多的不连续的块(叫碎片)。如此以来可能出现表的扩展所需要的连续块不能满足的情况。为了避免这样的情况发生而导致扩展失败,管理员要经常查询系统的表空间情况。在平时平常管理中最常用的几项指标就是表空间的总量、最大字节、使用多少、碎片多少等[4]。可以通过执行SQL脚本查询出所有表空间的自由空间、总空间数、已用空间、自由百分比及最大块的字节数。当发现表空间中的碎片数已经严重影响到数据库的运行时,可以考虑对该表空间进行重建。

4 统计信息维护

多年医疗数据库的运维经验,假如数据库性能问题是由于应用的SQL引起的,那么至少有50%是由于相关的表没有准确的统计信息而导致其不能高效的执行。如果数据库的统计信息不够准确,将会造成如下影响。

(1)导致不准确的选择率和基数(cardinality)评估;(2)导致访问表时不正确的访问路径(全表扫描、索引扫描等);(3)导致多表关联时使用不正确的关联方法(nested loop、hash join、merge join); (4)导致多表关联时选择错误的关联顺序。

优化器所使用的统计信息包括两类:系统统计信息与表、索引的统计信息。在数据库运维中,我们重点关注表、索引统计信息。其中的有关表和分区的总行数、高水位下的块数、空值数、唯一值数等等都是重要的统计信息。可以通过以下方式有效地在繁忙的系统中搜集、更新统计信息:(1)制定一个策略,让数据库系统自动地在夜间或非繁忙时段执行统计信息搜集作业;(2)按自动方式收集完统计信息之后,检查表和索引的统计数据是否能够反映数据分布;(3)对于数据量非常大、更新频繁的表可以使用DBMS_STATS.SET_TAB

LE_STATS、DBMS_STATS.SET_COLUMN_STATS等过程手工设置统计信息。

5 结语

Oracle数据库的日常维护工作除了上述重点分析的几点外,还包括数据库系统的备份恢复,主机系统的性能维护,网络、存储设备的管理等等。数据库系统的运维工作往往涉及到多方面内容,特别是针对性能问题的优化、故障诊断,都需要考虑到多种因素。本文针对系统参数调整、表空间管理和统计信息维护这几个较为常见的问题进行了重点介绍,数据库运维、优化工作不是一次、两次就能完成的,它是一项长期的维护工作,将伴随着系统整个生命周期进行。只有加强数据库系统运行阶段的监控和管理、才能确保数据库安全、平稳和高效地运行。

参考文献

[1]康晓东.医疗信息系统.清华大学出版社,2011年2月1日.

[2]Kevin Loney,Oracle Database11g完全参考手册.清华大学出版社,2010-6.

[3]卢军.Oracle性能监控与分析系统.西安理工大学,2007年硕士学位论文.

[4]王丽.Oracle数据库表空间的维护.科技与企业,2013(15).

上一篇:办公自动化软件在企业生产业计划中的应用 下一篇:基于生物医学信号处理技术的医疗检测与诊断