基于Oracle数据库与服务器的诊断、分析的研究
2018-11-19杨春松
杨春松,王 宽
(1.南瑞集团有限公司,江苏 南京211000;2.南京基石数据有限责任公司,江苏 南京210093)
1 为什么要对数据库进行诊断
在日常的数据库维护和性能优化中,大多数情况是平时没问题,有问题时没法解决,或者不敢去操作,通常都是在数据库已经出现了比较明显且严重的问题时才开始采取优化措施,并且是在解决问题之后,而不是发现问题之前。但是这时候基本上已经对应用造成了影响[3],且依赖高水平的DBA去解决这些问题,削弱减少这些影响。那我们如何才能针对数据库已展现的一些“量”的问题进行诊断,优化,从而防止其成为“质”的问题呢?
2 Oracle性能优化策略与原则
“吞吐量”和”响应时间”是衡量Oracle数据库性能的最主要的两个方面[2]。通常情况下可以通过优化生产环境的操作系统、数据库环境、网络IO及应用程序等策略来提高这两项指标,AWR报告基本囊括了以上的指标内容[1]。根据上述内容,我们制定了一套由操作系统,数据库命中率,数据库IO相关,数据库RAC相关,数据库并发相关,数据库整体情况的诊断模型,用其诊断数据库,根据诊断结果提出建议,优化方案的项目。该项目用zookeeper作为通信,采用B/S架构,支持高并发,多种采集脚本,多种操作系统,目前支持的数据库的版本暂时有Oracle10g,Oracle11g。针对不同的业务场景的实际生产环境的生产库,制定了多种评分模型,整体模型组成基本不变,加减项权重发生改变。原则上只对生产库进行系统表的查询操作,并采用采集脚本周期性一次采集计算入库,这样可以占用少量的资源和会话数。应当指出的是,由于数据库、操作系统、应用软件是相互依存的组成部分,都必须调整相互配合才能产生最佳的性能,因此该工程也会对数据库所在服务器进行相关数据的采集,而对应的评分模型则应根据系统的具体情况以及特点,具体分析和调整。这样才能减少现场运维人员的工作量,简化了运维操作与操作流程,降低了各种生产环境对高级DBA的依赖。
2.1 建立模型的目的
实际上在针对Oracle10g及以上的数据库进行诊断分析时,参考AWR报告,但又不完全依赖AWR报告,并且本质上AWR报告是对Oracle数据库本身的时间段内的自检,底层也是通过SQL查询各种系统表实现的,该项目直接通过生成AWR报告的底层SQL,写成通用和定制脚本,对数据库运行状态的瞬时数据进行查询并持久化到数据库,流程如图1所示。因此可以将采集数据,计算结果,分析内容,分析结果,优化建议,优化操作等进行可视化展示,从而让用户对自己的生产库的运行状况有一个总体的认知,能够有效地诊断出数据库的问题或者隐患,能够针对这问题或隐患提出优化建议和解决办法。与此同时该工程还能形成日检报告,让运维人员对生产库过去一天运维状况大致地了解,提高DBA对应生产库以及生产环境的后续运维的工作效率。
2.2 模型的优化
按照图1的流程可以发现,该项目针对多种生产库进行数据的采集,结果的计算,内容的分析,结果的分析,优化建议,优化操作。而针对不同的生产环境或者生产库,我们就需要定制不同的模型去适配,从而保证模型的优选。需要指出的是,这是一个学习的过程,我们并不能证明模型与生产库匹配的正确性,但是能够保证模型与生产库匹配的合理性,这是一个日积月累的过程,是各个领域的DBA对生产环境,生产库运维知识的沉淀与积累,同时也具备了一定的先见性,可以见微知著,防患于未然。
图1 数据库诊断流程
3 对诊断结果进行分析的作用
3.1 能够快速地定位问题
上文所述,该项目定制了模型包含很多个指标项,这些指标项就是通底层SQL(采集脚本)查询得到。该模型对比AWR报告又区别于它,AWR报告是将强关联的相关数据内容进行展示,但是该模型是将可能影响数据库性能负载的相关项都采集进来,再加权算比重,对数据库进行打分,通过分值体现数据库的健康、运行、性能负载等状态。在一定的分值范围内告知运维人员,针对减分项如何去调优,针对问题项如何去解决,从而解决平时的“量”的问题,有效防止由量的问题所产生的质的问题,同时即便产生了质的问也能通过分值波动转折点,采集项值的断崖式上升或下降快速定位问题。
3.2 能够帮助初级DBA运维
该项目帮助DBA日常梳理优化数据库与服务器,但是仍是免不了出现一些日常维护以外的问题,而这些问题的引因、优化方式、解决办法等通常都是超出了运维人员的操作、认知和解决能力的范畴,通过该工程的模型分析和历史数据对比,以及问题的快速定位,可以帮助初级DBA对生产库以及服务器的运维,从而减少了大多数情况下对高级DBA的依赖,间接优化了运维人员结构,发挥最大效益。
4 结束语
ORACLE数据库的性能优化调整是一个系统工程,涉及的方面很多。同时也是一个渐进的过程,随着系统的运行和数据量的增加,方法变得多样。DBA需要综合运用优化的方法,认真分析其运行过程中出现的各种问题,才能保证数据库高效地运行。该项目基本包含了DBA认知范围内所有的业务场景、生产环境。因而可以按需定制,针对不同的业务场景、生产库,制定不同的模型,才能最优地发现其所对应的隐患和问题,才能让低级运维人员也能在可控范围内对数据库进行性能优化、问题解决等操作。