当前位置:文档之家› ORACLE 10G自动化特性在联通BSS系统性能优化工作中的应用

ORACLE 10G自动化特性在联通BSS系统性能优化工作中的应用

ORACLE 10G自动化特性在联通BSS系统性能优化工作中的应用摘要:在介绍Oracle 9i版本下性能优化的基本方法基础上,着重论述了Oracle 10g版本中的一些自动化特性,以及应用10g中的自动化特性进行数据库系统性能优化的方法和案例。

关键词:Oracle 自动化;10G 优化;ADDMOracle数据库是中国联通核心业务支撑系统中最主要的关系型数据库管理系统。

在联通BSS业务支撑系统的体系结构中,绝大多数的子系统都是典型的在线事务处理系统(OLTP系统),对业务处理的实时性和性能要求非常高。

基于以上情况,对Oralce数据库及BSS应用系统进行不断地性能调整和优化,就成为联通业务支撑工作中一个必不可少的关键性工作。

Oracle 10G中很多性能优化工作可以借助自动化的工具方便快捷地进行,使性能优化工作的效率和效果得以大幅提升。

1Oracle 9i环境下性能优化的典型方法和问题1.1Oracle 9i环境下典型的性能优化步骤通常情况下Oracle 9i环境下的性能优化工作的步骤如下:①用户或应用维护人员反馈:“某个应用场景下,系统反应很慢”;②数据库管理员(DBA)人工观测该应用是否确实比较慢,或者根据以往记录的性能测试数据来比较,确认该性能问题是否确实存在;③使用统计信息收集工具包-StatsPack包(以下简称SP 包),在可能会发生性能问题的时间段,进行性能统计信息搜集(即进行“snapshot快照”);④使用SP包,生成SP分析报告;⑤DBA阅读SP分析报告,结合自己的经验,手工在浩如烟海的信息中找到可能存在的性能瓶颈;⑥对于性能瓶颈,DBA结合自己的经验,手工设计优化方案;⑦DBA或应用系统开发人员,进行数据库配置、数据库对象或应用程序的调整;⑧调整完成后,再次进行性能表现的观测,如果问题没有得到解决,则再次从步骤三开始进行新一轮的过程,直至问题得以解决。

Oracle 9i时期典型的性能优化步骤的示意图如图1所示:图1Oracle9i时期典型的性能优化的步骤1.2Oracle 9i环境下性能优化方法存在的问题从上述步骤中可以明显看出,9i环境下的性能优化,均是DBA人工处理,所有的判断和决策都依靠人来开展,不仅非常耗时耗力,而且对进行优化工作的人员素质要求较高,对DBA 的“经验”要求极高,旺旺只有对业务较熟悉的DBA才能进行一些有效的优化工作。

2Oracle 10G的自动化特性介绍2.1Oracle 10G的自动化特性概述Oracle 10G在降低DBA工作强度和提高工作效率和质量方面做了很多改进:丰富了大量的ADVICE功能;新增了很多有用的自动化功能,如自动化数据库诊断监控(ADDM)、SharedPool内存自动管理(ASMM)、自动段管理(ASM)、优化器统计信息自动收集(AOSC)等。

2.2Oracle 10G部分实用的自动化特性介绍2.2.1自动数据库诊断监控ADDM自动数据库诊断监控(Automatic Database Diagnostic Monitor,后文简称ADDM)是10G自动化体系中最重要的一个部分。

简单的说,ADDM是对以前版本中SP包的增强,它在以前的SP包的基础上新增了如下特性:①自动后台执行快照:自动快照的最大好处是可以在出现性能问题后,不用担心已经错过了性能问题突发的时刻,可以不再等待问题重现;②更多的统计信息种类:ADDM快照所收集的信息比9i的SP包快照收集的信息种类多了很多,很显然,收集的统计信息的种类增多,对快速准确分析和解决性能问题极有好处;③增强分析报告的可读性:分析报告可读性的增强是ADDM技术中最吸引人眼球的一个进步:9i中SP报告的内容完全是一些统计数据,没有任何“该怎么做”的建议。

而在10G中,ADDM的报告的内容已经是Oracle 分析完成的“汇报材料”,里面包含了各类有益的、具备可操作性的建议。

2.2.2自动共享内存管理ASMM自动共享内存管理Automatic Shared Memory Management (后文简称ASMM)是对Oracle最重要的内存结构-SGA进行自动化管理的先进技术。

SGA包括DB CACHE、SHARED POOL、LARGE POOL、JA V A POOL等核心内存组件,而对各组件大小的调整一直是Oracle数据库性能调优的重要手段。

在之前版本中,需要DBA 根据经验来决定每个组件的的大小。

这种手工模式存在很大的弊端,一是非常非常麻烦,二是很难适应多变的应用场景。

在10G中,ASMM技术的引入,可以很好地解决以前的问题,DBA不需要再操心各组件之间的平衡,只需设置一个较大的SGA_TARGET参数即可,该参数指定了SGA的目标容量,Oracle的MMAN进程会自动在SGA总容量范围内进行各组件的尺寸调整。

下面这个应用场景的例子可以很好地说明ASMM作用:图2ASMM自动内存调整示意图大多数应用系统,都或多或少存在这样一种情况:白天营业期间,系统是典型的OLTP应用系统,需要很大的buffer cache,而到了夜晚,系统的特性又变得更像DSS应用系统,批量后台任务大大增加(如统计报表),这时需要更大的large pool。

ASMM可以很好地满足应用的需要:在SGA_TARGET 总量范围内,白天自动增加buffer cache、减少large pool,晚上则反过来,这样既很好地满足了白天需要大buffer cache以保证高性能I/O性能,又确保了晚上有足够的large pool用于支持大量的并行查询、大量排序。

2.2.3自动段管理建议ASA自动段管理建议Automatic Segment Advisor(后文简称ASA)也是10G新增的一个很有特色的自动化特性。

对段空间的管理Oracle一直使用高水位线方式管理(后文称HWM),这种管理机制的最大弊端之一是易产生碎片问题,导致空间利用率差和访问性能低。

在以往版本中,核查碎片问题需要DBA手工编写和执行一些脚本,并和熟悉应用的人员一起讨论以确认需发现碎片多的对象。

在10G中,ASA会每天自动运行一次,并对热对象(HOT OBJECT,即访问频率高的对象)段空间碎片情况予以检查,检查的结果会明确报告哪些段的碎片问题严重,并给出压缩的建议和脚本。

2.2.4SQL调优助手SQL Tuning Advisor在性能调优工作中,很多时候,最终的调整对象往往是某条具体的SQL语句,即通过对某些有性能问题的SQL语句调整来达到性能优化的目的。

在以往版本中,大多数情况下,需要由DBA或开发人员人工进行分析、调整、测试。

在10G中,对于SQL语句优化可以借助SQL Tunning Advisor进行,自动对疑似有性能问题的SQL语句进行分析,并获得优化的建议。

3Oracle 10G环境下性能优化的典型方法由于以ADDM为代表的多种自动化特性的存在,在10G 中对系统性能进行优化的步骤就相对地简化了许多,如图2所示。

步骤如下:①用户或应用维护人员反馈:“某个应用场景下,系统反应很慢”;②DBA确认该性能问题是否确实存在;③使用ADDM工具,直接对发生性能问题时间段内的快照进行分析;④阅读ADDM分析报告,报告中已经明确描述了哪里存在重要的性能瓶颈;⑤利用ADDM报告中建议的解决方案,再结合Segment advisor和SQL tunning advisor等工具,实施优化;⑥调整完成后,再次进行性能表现的观测,如果问题没有得到解决,则再次从步骤3开始进行新一轮的过程,直至问题得以解决。

4联通新一代BSS系统性能优化案例介绍下面是Oracle 10G自动化特性在新疆联通BSS系统上的一次性能优化的实际应用案例。

4.1接到性能问题投诉某日,应用系统管理员接到客服投诉,反映系统某新增功能操作非常慢,点击完“查询”按钮后,长时间系统没有响应。

图3Oracle 10Gj时期典型的性能优化的步骤4.2用ADDM核查性能问题DBA和应用系统管理员对该功能进行测试,发现性能问题确实存在。

恰好发生性能问题的数据库版本是10.2.0.4.0,DBA随即使用ADDM特性,针对最近2小时之内的统计快照,使用$Oracle_HOME/rdbms/admin/addmrpt脚本生成ADDM报告(下文简称《报告》)。

《报告》中,很明确报出了3类可能影响性能问题的重要因素:①部分segment可能存在不合理性,导致IO wait;②部分sql语句消耗了过多的时间和I/O wait;③SGA尺寸不合适,导致附加的I/O 或hard parses。

4.3根据ADDM的建议实施优化对于以上3类问题,《报告》也分别明确给出了建议的解决方案。

对于“segment不合理性问题“,ADDM建议用segment advisor进一步核查。

对于“部分SQL语句不够优化的问题”,ADDM建议用SQL Tuning Advisor进一步核查。

对于“SGA尺寸不合适的问题”,ADDM建议调整SGA_TARGET的大小。

4.3.1用segment advisor核查段不合理性问题以《报告》中反馈的JBPM_V ARIABLEINSTANCE表为例,概述segment advisor的用法:首先,依次执行dbms_advisor包的create_task、create_object、set_task_parameter和execute_task四个过程,用来运行一次segment advisor。

然后查看DBA_ADVISOR_RECOMMENDATIONS、DBA_ADVISOR_FINDINGS和DBA_ADVISOR_ACTIONS三个数据字典视图,即可看到相应的问题细节和解决方案细节。

本次核查的结果,确认TASKBILL_INCALL_INFO表需要进行空间回收并需要打开row movement属性,同时给出了具体的执行脚本。

4.3.2SQL Tuning Advisor核查SQL语句性能问题下面以《报告》中反馈的这条问题的sql语句为例,介绍SQL Tuning Advisor的用法:select variablein0_.TASKINSTANCE_ as TASKINS16_1_, variablein0_.CLASS_ as CLASS2_119_0_ from JBPM_V ARIABLEINSTANCE variablein0_ where variablein0_.TASKINSTANCE_=:bnd;首先,通过运行DBMS_SQLTUNE包的CREATE_TUNING_TASK和EXECUTE_TUNING_TASK过程创建和执行一个SQL Tuning 任务。

相关主题