lz医学院附属中医院出差总结

来源:互联网 发布:上海餐饮软件 编辑:程序博客网 时间:2024/04/27 16:32

本次应CD公司要求,前往LZ医学院附属中医院处理服务器整体性能问题。到达现场后,我首先与医院相关技术人员进行了简单的沟通,主要是了解目前医院对性能差异的要求,主要反馈了2个方面:部分模块进入比较慢;EXP备份时间过长,随后我与当地的技术负责任DJB进行了沟通,确认用户反馈问题的真实性。

l 分析问题

随后我通过AWR性能报告,从专业角度分析了用户数据库的性能瓶颈,发现主要问题出现在以下几个方面:

1.数据库内存设置不合理

用户目前环境是232g内存的服务器做的RAC,每个服务器高峰时期的会话连接数接近600个会话,但是目前数据库的SGA设置为7g,查看视图V$SGA_RESIZE_OPS可以清楚的看到共享池和高速缓冲区一直在频繁的‘抖动’,甚至偶尔出现了错误,这说明SGA设置不合理,也是导致性能整体不高的原因。

2.第三方接口程序SQL不合理

另外通过AWR报告发现,医院的第三方接口中的SQL语句对性能消耗非常大,如下图:

咨询得知这是一个第三方病案的接口程序,通过我们提供的视图出院患者基本信息提取数据,其SQL语句如下:

Select *

From出院患都基本信息b

Where病人id In

                     (Select病人id From出院患都基本信息a WhereTo_Char(出院日期, 'YYYY-MM-DD') Between '2012-08-22' And '2012-08-22')

Order By病人id

从上面的红色字体部分可以看到对方的开发人员犯了一个常见的错误,就是对索引字段使用函数,这样就会导致无法使用该字段的索引,通过执行计划也证明了我们的判断,由于没有使用索引,使得其对门诊费用记录和住院费用记录进行了全表扫面,对于一个已经使用了8年的用户,对费用记录进行全表扫面可以用‘灾难’来形容。

3.数据库未作归档

用户目前购买了塞门铁克的BE备份软件,但是该软件要求数据库必须是归档模式,用户以前由于本地磁盘空间限制,关闭了归档,这次希望能够把归档重新启用,采用RMAN备份方式。

l 优化过程:

1.调整SGA

了解了性能问题的出现缘由,晚上就对医院数据库进行了调整,首先就是调整数据库的SGA,关闭自动管理,增大SGA大小为16G,手工设置共享池和高速缓存区大小,在调整过程中出现了意外,由于操作系统内核参数shmallshmmax的设置问题,导致第一次增大SGA的时候数据库提示ORA-27102: out of memory错误,再经过调整后,顺利完成了SGA的调整。

2.接口调整

接口的问题由用户同接口商进行联系,要求其对SQL语句进行调整,避免全表扫面

3.设置归档

由于用户本地磁盘空间有限,考虑归档持续可靠性要求,把归档日志放在存储中,由于用户所有存储空间都划分给ASM,因此无法存放备份数据,经过给用户够用,目前暂时不做RMAN备份,采用EXP异地备份,只需把归档模式启用就行,而由用户联系塞门提客技术人员,尽快配置异地备份。

l 优化效果:

通过第二天的观察,用户整体感觉使用流畅,进入模块比以前速度明显,从AWR报告对比来看,SGA使用充足,物理读下降明显,用户比较满意本次优化成果。