关于ORACLE数据库高效运行的探讨

2009-06-29 05:03翟油华
中国高新技术企业 2009年10期
关键词:Oracle数据库健康检查

摘要:针对oracle数据库健康检查,文章提出了一套较为科学全面的健康检查方案,并分别给出了相关建议。通过对oracle数据库运行状况进行全面彻底检查和分析,保障其健康运行。

关键词:oracle数据库;健康检查;医院管理管理信息系统

中图分类号:TP311文献标识码:A文章编号:1009-2374(2009)10-0016-02

医院管理管理信息系统(HIS)在医院日常工作“扮演”着越来越重要的角色。数据库理所当然的成为了重中之重。在我院信息系统日常管理维护过程中,对Oracle数据库的管理工作特别重要。Oracle数据库健康检查的重点是医院信息系统后台使用的数据库服务器。检查中发现了一些Oracle数据库存在一些问题,突出的是操作系统版本和补丁不一致,数据库补丁不全面,用户数据和系统数据共用系统表空间,数据库用户不正确授予DBA权限,存在无效对象等。这次数据库健康检查,发现并现场解决了一些问题,避免了隐患变为故障,保证了数据库的正常运行,取得了较好的效果。

下面简要介绍有关oracle数据库健康检查的相关内容,以供DBA日常管理参考之用。

一、数据库健康检查的现实意义

数据库健康检查是采用一套规范、科学的方法,通过分析数据库产生的日志文件、Trace文件、参数文件以及通过数据采集产生的Report文件,对数据库本身的运行状况进行全面彻底检查和分析,发现潜在风险,及时提供相应的修补方案,防患于未然。

二、健康检查的常用工具

1.UTLBSTAT/UTLESTAT.

2.STATSPACK.

3.第三方专业工具:Quest、VERITAS Precise产品、CA……

三、数据库健康检查的主要内容

对数据库健康检查,可以从以下几个方面进行:(1)基础信息检查;(2)数据库总体设计与规划检查;(3)重要参数的配置检查;(4)日志文件检查;(5)数据库备份检查。

(一)基础信息检查

检查的内容主要包括数据库服务器硬件配置状况(CPU数目、内存大小等)、存储(IO Controller数目、RAID、HD数目及大小等)、操作系统及版本信息、相关文件系统、Oracle数据库版本信息等。相关建议:

1.常用检查系统Unix/Linux命令为:Vmstat/Top/Iostat/Sar等。

2.峰值时内存使用,CPU利用率,磁盘I0都是非常重要的检查监控内容。

(二)数据库总体设计与规划检查

数据库的总体设计与规划是系统维护和性能优化的基础,也是健康检查的一个重点。检查的主要内容包括以下几方面:

1.数据库的规划检查内容。主要是对Oracle安装文件,控制文件,重做日志文件,归档日志文件,回滚段。相关建议:(1)为了安全一般建议创建多个控制文件,且分布在不同的硬盘上;(2)为了使系统性能更好可以创建多重做日志文件组,并建议重做日志文件最好放在最快的单独磁盘上,以提高性能;(3)建议将数据文件、日志文件和控制文件的安置路径与数据库系统存放在不同的路径上;(4)根据硬件设备具体情况,建议做到频繁读写的文件和其他关键文件的负载平衡。

2.表空间和数据文件的相关检查内容:主要检查以下几方面的内容:(1)System,Rollback,Temporary,Data,Index,Undo(针对9i)的表空间和数据文件的分布,利用率等情况;(2)表空间的碎片率;(3)数据文件的Corrupted Block(坏块)检查;(4)数据文件的I/O分布。

相关建议:(1)除系统之外的应用不要放在System表空间中。每个应用系统用户都应该有自己的表空间;(2)所有的ORACLE用户指定同一个Temporary Tablespace;(3)如有必要,可定时进行碎片合并工作。

3.表和索引的相关检查内容。主要检查以下几方面的内容:(1)Table/Index的Pctfree,Pctused,Mintrans,Maxtrans参数是否设置;(2)Table/Index的Storage参数是否规划;(3)大数据量的Table/Index是否做分区管理;(4)Table/Index的Analyze和Rebuild;(5)Chaining Row和Migration Row检查;(6)Table/Index的Corrupted Block(坏块)检查。

相关建议:(1)Initial Extent应设计的足够大,尽量能存放该表的所有数据;对于数据量大的表,Next Extent也要设计的足够大,以降低Oracle对空间的动态管理;(2)对于更新和插入操作频繁的表,注意索引的创建和Initial值的设置;(3)对于频繁使用的表,在数据量允许的条件下,可以考虑将其驻留内存,以提高对该表的访问效率;(4)对INSERT比较频繁的表,注意设置正确的freelists值;如果采用OPS数据库,还需考虑freelist group的设置;(5)对于数据量很大的表,尽量采用表分区的技术;(6)选择合理的索引字段,尽量避免用大字段建立索引;(7)均衡表上的索引数量,不要在表上创建太多的索引,避免Oracle大量维护索引数据;(8)合理的使用索引,有些情况应避免使用索引,如对表中的数据量扫描超过10%。

4.Oracle其它对象检查。Oracle数据库中存储的是各种对象,检查数据对象的状态在数据库检查维护中占有很高比例。需要检查的对象主要有以下几类:(1)Sequence检查;(2)Trigger/ StoredProcedure Function、Package/View的状态检查;(3)Oracle User/Schema检查;(4)DB Link检查;(5)检查失效的约束(dba_constraints)。

相关建议:(1)可以在视图all_objects,dba_objects或user_objects中找出无效对象的信息。从all_errors视图上也能看到状态为”INVALID”(无效)的对象的详细错误信息;(2)如果一个包或过程无效,下一次调用将抛出错误。通过运行$Oracle_home/rdbms/admin目录下的utlrp.sql可以防止(解决)此类问题的发生。utlrp.sql脚本在Oracle8i和Oracle9i已经有了实质的变化,执行前请阅读该脚本;(3)针对以上Oracle对象主要通过dba_users、dba_objects,dba_triggers、dba_jobs、dba_db_links、dba_constraints等字典视图查询。

(三)重要参数的配置检查

重点关注以下参数:

log_buffer、 db_block_buffers、shared_pool_size 、db_cache_size(oracle 9i) 、sort_area_size 、hash_area_size

相关建议:(1)综合考虑操作系统,应用系统,oracle内存空间分配,OLAP应用与OLTP应用初始化参数设置有很大区别;(2)在对Oracle内存设置调整时,可参考Statspack报告信息v$system_event、v$sysstat、v$sesstat、v$latch等视图信息;(3)share_pool_size大小要适当,使用率应该稳定在75%~90%间。如果发现该共享池命中率不高可以适当的增加shred_pool_size;(4)log_buffer通常几百K至1M大小。

(四)警告日志检查

当数据库内部操作出现错误,Oracle数据库将通过警告日志提醒用户,结合相关的跟踪文件来监控数据库。

主要是对alert_sid.log、sqlnet.log、listener.log等日志文件和Trace文件进行检查,查看数据库运行期间的状况报告,检查和清理应用数据库警报日志文件(alert_sid.log),检查是否存在数据库系统错误提示信息。

此外还有对Net及SQL*Net产生的Log检查,以及对产生的Trace文件分析。相关建议:(1)启动日志监控和警告日志的通告是所有数据库管理员任务的重中之重;(2)可以通过Unix或Linux下的corn程序创建一个shell脚本来检查错误日志文件。此外,Oracle的外部表特性也允许直接使用SQL来查询警告日志;(3)值得注意的是,警告日志文件将会变的越来越大,建议将其保持一个易于管理的大小,可以通过重命名文件来备份当前版本,下一次要写日志将导致创建一个新的警告日志;(4)对于日志文件中记录的错误信息给予记录和分析。

(五)数据库备份检查

主要是针对备份方案的技术审查,检查方案整体的可行性。客观条件允许的情况下,应该进行完整的备份恢复测试,以保证数据库能在系统发生故障的情况下可以顺利恢复。相关建议:

1.针对生产数据库,根据设备的情况和各局的数据量(包括库的大小和每天产生归档日志文件的多少)来决定备份的频率。

2.建议数据量大的每周两次数据库全备份,每日两次归档日志的备份,数据量小的每周一次数据库全备份,每日一次归档日志的备份。备份的频率主要从恢复的时间来考虑,归档日志太多恢复时间会比较长。有了全备份,在某个表空间被损坏的情况下,也可以进行单个表空间的恢复。

3.如果条件允许,定期校验备份,比如恢复测试倒测试环境。

除了以上列述的项是数据库健康检查的主要方面外,还应对oracle的主要补丁;RAC环境下负载分配、接管;第三方软件等情况进行安全检查。

四、结语

Oracle数据库在医疗卫生行业(医院管理信息系统)中应用非常广泛,健康稳定的Oracle数据库是医疗卫生单位信息系统稳定高效运转的基础条件。健康检查是数据库维护工作的基础,应定期对Oracle数据库进行健康检查工作,保障医院信息系统安全稳定。

参考文献

[1]April Wells著,孙杨译.Oracle DBA日常管理[M].清华大学出版社,2007.

[2]盖国强,冯春培,叶梁,冯大辉.Oracle数据库性能优化[M].人民邮电出版社,2005.

作者简介:翟油华(1974-),男,江苏兴化人,南京医科大学第二附属医院信息科工程师,研究方向:软件工程。

猜你喜欢
Oracle数据库健康检查
成都市13468名育龄男性孕前优生健康检查分析
孕前优生健康检查中护理健康教育的作用分析
陕西省旬阳县孕前优生健康检查结果分析及预防研究
更 正