您的位置:首页技术文章
文章详情页

ORACLE性能诊断―学习statspack笔记(二)[概述]

【字号: 日期:2023-11-18 08:18:31浏览:7作者:猪猪
Oracle性能诊断―学习statspack笔记(二)[概述]作者:刘颖博 时间:2004-3-3mail:liuyingbo@126.com,请指正转载请注明出处及作者 ORACLE性能诊断涉及对象A.;;;服务器、网络以及磁盘(外部的环境)B.;;;实例(SGA,后台进程)C.;;;对象(表,索引,段……)D.;;SQLE.;;;设计(指的是应用的设计,这部分一般说来是很难改变了)ORACLE性能诊断要遵循上面的顺序,先察看服务器是否存在问题,主要从CPU,RAM,DISK配置是否存在问题,检查操作系统的核心参数的设置等等;假如是跨地域的进行共享的多个ORACLE,网络通信性能也是非常的要害的,ORACLE利用的是TNS(Transparent Network Substrate 透明网络层)提供数据库之间的分布传输;另外影响ORACLE相应时间的最大的单独组成部分是磁盘I/O,能够减少磁盘I/O的任何事情都会对ORACLE的性能产生正面的影响,比如改变ORACLE初始化参数,调整相应的SQL等;对于ORACLE的实例调整应该注重的问题是,过载的ORACLE的SGA会导致严重的性能问题,对于ORACLE实例的调整主要包括:初始化参数、数据缓冲存储(DEFAULT、KEEP、RECYCLE)和SGA中共享池和库缓存等;还有就是ORACLE对象的调整,包括存储参数等等;最后是SQL语句的调整。STATSPACK概述 STATSPACK来源在ORACLE最早版本就存在的UTLBSTAT和UTLESTAT工具。开始的BSTAT-ESTAT工具就可以直接从ORACLE的内存结构中获取信息。 STATSPACK通过获取数据库当前状态的快照来进行工作。大部分的情况,我们会规划一个以小时为单位来收集数据的JOB,并在需要的时候请求附加快照。 当我们获取快照时,STATSPACK会从SGA内部的RAM内存结构中采样,并记录到相应的STATSPACK表中,注重的是,大多数情况下,SGA中的V$视图与相应的的STATSPACK表之间存在直接的对应关系,比如:V$SYSSTAT --------->STATS$SYSSTATSQL> DESC V$SYSSTATName;;;Null?;Type----------------------------------------- -------- ----------------------------STATISTIC# NUMBERNAME;;;;VARCHAR2(64)CLASS;;;;;;;;;;;NUMBERVALUE;;;NUMBERSQL> DESC STATS$SYSSTATName;;;Null?;Type----------------------------------------- -------- ----------------------------SNAP_ID;;;;;;;;NOT NULL NUMBER(6)DBID;;;NOT NULL NUMBERINSTANCE_NUMBERNOT NULL NUMBERSTATISTIC#;;;;;NOT NULL NUMBERNAME;;;;;;;;;;;NOT NULL VARCHAR2(64)VALUE;;;NUMBER 在理解STATSPACK工具的时候,很要害的是要明白通过STATSPACK快照收集的信息是累计值,从V$视图中收集到起始时间的数据库信息,然后进行持续累加,知道实例中止,我想,这也许就应该是STATSPACK不能产生两张跨越SHUTDOWN的快照的报告的原因吧。 对应STATSPACK存在一系列的STATSPACK表,不同的ORACLE版本会有一定的差异。这些表大体上分为控制表、参数表、事件表、事务处理表、并行服务器表、概要表、系统表等等下面是我列出的ORACLE9I的STATSPACKE表:SQL> select table_name from dba_tables where table_name like 'STATS$%';TABLE_NAME------------------------------STATS$DATABASE_INSTANCESTATS$LEVEL_DESCRIPTIONSTATS$SNAPSHOTSTATS$DB_CACHE_ADVICESTATS$FILESTATXSSTATS$TEMPSTATXSSTATS$LATCHSTATS$LATCH_CHILDRENSTATS$LATCH_PARENTSTATS$LATCH_MISSES_SUMMARYSTATS$LIBRARYCACHETABLE_NAME------------------------------STATS$BUFFER_POOL_STATISTICSSTATS$ROLLSTATSTATS$ROWCACHE_SUMMARYSTATS$SGASTATS$SGASTATSTATS$SYSSTATSTATS$SESSTATSTATS$SYSTEM_EVENTSTATS$SESSION_EVENTSTATS$BG_EVENT_SUMMARYSTATS$WAITSTATTABLE_NAME------------------------------STATS$ENQUEUE_STATSTATS$SQL_SUMMARYSTATS$SQLTEXTSTATS$SQL_STATISTICSSTATS$RESOURCE_LIMITSTATS$DLM_MISCSTATS$UNDOSTATSTATS$SQL_PLAN_USAGESTATS$SQL_PLANSTATS$SEG_STATSTATS$SEG_STAT_OBJTABLE_NAME------------------------------STATS$PGASTATSTATS$IDLE_EVENTSTATS$PARAMETERSTATS$INSTANCE_RECOVERYSTATS$STATSPACK_PARAMETERSTATS$SHARED_POOL_ADVICESTATS$SQL_WORKAREA_HISTOGRAMSTATS$PGA_TARGET_ADVICE41 rows selected.其中STATSPACK表的主要锚定点是STATS$DATABASE_INSTANCE,具体的表的介绍我打算放到后面的文章进行讨论。 可以说,以前我们的ORACLE性能调整主要是一种REACTIVE TUNNING(反应式调整),通过STATSPACK工具,我们可以进行长期趋势分析、性能问题事后分析、资源规划以及猜测建模等,我们完全可以采用一种PROACTIVE TUNNING(前瞻式调整)。并且从ORACLE9I开始,ORACLE可以动态的改变ORACLE实例的内存配置,ORACLE也正朝着动态数据库配置迈进。(待续)……………………………………………………………………………………参考Donald K.Burleson《ORACLE HIGH-PERFORMANCE TUNING WITH STATSPACK》
标签: Oracle 数据库