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

oracle|笔记|性能

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

 

作者:刘颖博

时间:2004-3-3

mail:liuyingbo@126.com,请指正

 

转载请注明出处及作者

 

ORACLE性能诊断涉及对象

 

A.      服务器、网络以及磁盘(外部的环境)

B.      实例(SGA,后台进程)

C.      对象(表,索引,段……)

D.     SQL

E.      设计(指的是应用的设计,这部分一般说来是很难改变了)

 

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$SYSSTAT

 

SQL> DESC V$SYSSTAT

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 STATISTIC#                                         NUMBER

 NAME                                               VARCHAR2(64)

 CLASS                                              NUMBER

 VALUE                                              NUMBER

 

SQL> DESC STATS$SYSSTAT

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 SNAP_ID                                   NOT NULL NUMBER(6)

 DBID                                      NOT NULL NUMBER

 INSTANCE_NUMBER                           NOT NULL NUMBER

 STATISTIC#                                NOT NULL NUMBER

 NAME                                      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_INSTANCE

STATS$LEVEL_DESCRIPTION

STATS$SNAPSHOT

STATS$DB_CACHE_ADVICE

STATS$FILESTATXS

STATS$TEMPSTATXS

STATS$LATCH

STATS$LATCH_CHILDREN

STATS$LATCH_PARENT

STATS$LATCH_MISSES_SUMMARY

STATS$LIBRARYCACHE

 

TABLE_NAME

------------------------------

STATS$BUFFER_POOL_STATISTICS

STATS$ROLLSTAT

STATS$ROWCACHE_SUMMARY

STATS$SGA

STATS$SGASTAT

STATS$SYSSTAT

STATS$SESSTAT

STATS$SYSTEM_EVENT

STATS$SESSION_EVENT

STATS$BG_EVENT_SUMMARY

STATS$WAITSTAT

 

TABLE_NAME

------------------------------

STATS$ENQUEUE_STAT

STATS$SQL_SUMMARY

STATS$SQLTEXT

STATS$SQL_STATISTICS

STATS$RESOURCE_LIMIT

STATS$DLM_MISC

STATS$UNDOSTAT

STATS$SQL_PLAN_USAGE

STATS$SQL_PLAN

STATS$SEG_STAT

STATS$SEG_STAT_OBJ

 

TABLE_NAME

------------------------------

STATS$PGASTAT

STATS$IDLE_EVENT

STATS$PARAMETER

STATS$INSTANCE_RECOVERY

STATS$STATSPACK_PARAMETER

STATS$SHARED_POOL_ADVICE

STATS$SQL_WORKAREA_HISTOGRAM

STATS$PGA_TARGET_ADVICE

 

41 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》

 

 

 

时间: 2024-10-31 10:08:36

ORACLE性能诊断―学习statspack笔记(二)[概述]的相关文章

ORACLE性能诊断―学习statspack笔记(一) [安装与测试]

oracle|笔记|性能 ORACLE性能诊断―学习statspack笔记(一)   作者:刘颖博 时间:2004-3-2 mail:liuyingbo@126.com,请指正   转载请注明出处及作者   说明:oracle8.1.6开始引进statspack,statspack是诊断oracle性能的强有力的工具   安装前准备   A.首先是系统参数的确认: job_query_processes:为了建立自动任务,执行数据收集,该参数要大于0 time_statistics:为了收集操作

ORACLE性能诊断―学习statspack笔记(三)[表的分类]

oracle|笔记|性能 ORACLE性能诊断―学习statspack笔记(三)[表的分类]   作者:刘颖博 时间:2004-3-10 mail:liuyingbo@126.com,请指正   转载请注明出处及作者   说明:STATSPACK并不能获取全面分析性能问题所需要的所有信息.特别是问题出在DISK,RAM,CPU以及NETWORK等数据库外部.   STATSPACK表的分类 A:控制表:stats$database_instance ,stats$snapshot B:参数表:s

ORACLE性能诊断―学习statspack笔记(四)[扩展statspack收集服务器统计]

oracle|笔记|服务器|统计|性能 ORACLE性能诊断―学习statspack笔记(四)[扩展statspack收集服务器统计]   作者:刘颖博 时间:2004-3-22 mail:liuyingbo@126.com,请指正   转载请注明出处及作者   说明:由于STATSPACK并不能获取全面分析性能问题所需要的所有信息,所以需要扩展其收集服务器的统计信息.(本文环境REDHAT Linux7.2)   VMSTAT介绍 通过STATSPACK收集服务器信息,主要通过收集VMSTAT

Oracle性能优化学习笔记之共享Sql语句

       为了不重复解析相同的SQL语句,在第一次解析之后,Oracle将SQL语句存放在内存中.这块位于系统全局区域SGA(systemglobal area)的共享池(shared buffer pool中的内存可以被所有的数据库用户共享.因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前执行过的语句完全相同,Oracle就能很快获得已经被解析的语句以及最好的执行方案.Oracle的这个功能大大地提高了SQL的执行性能并节省了内存的使用.        可惜的是ORACL

Oracle性能优化学习笔记之选择最有效率的表名顺序

        选择最有效率的表名顺序(只在基于规则的优化器中有效)         ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二

Oracle性能优化学习笔记之WHERE子句中的连接顺序

        ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.         例如:        (低效,执行时间156.3秒) SELECT - FROM EMP E WHERE SAL > 50000 AND JOB = 'MANAGER' AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);      

一个执行计划异常变更引发的Oracle性能诊断优化

最近有一个OLTP应用使用的Oracle数据库突然出现性能问题,DBA发现有一些delete语句执行时间骤长,消耗大量系统资源,导致应用响应时间变长积Q.   辅助信息: 应用已经很久未做过更新上线了. 据开发人员反馈,从之前的应用日志看,未出现处理时间逐步变长的现象. 这是一套RAC+DG的环境,11g的版本. 这次突然出现大量执行时间超长的SQL语句,是一条删除语句,delete from table where key1=:1 and key2=:2 and ...(省略此案例不会用到的其

Oracle性能调整与优化(二)

为了能取得圆满成功,我将涉及到一些预备步骤,它们将在查看发生了什么时需要,这些步骤包括运 行plustrce SQL脚本.创建一个"EXPLAIN_PLAN"表.授予角色.配置sql*plus环境查看执行计划.所有 这些步骤都包括在"Oracle 9i R2数据库性能调整指南和参考"中"在sql*plus中使用自动跟踪",对于 Oracle 10g,这些步骤包括在"sql*plus用户指南和参考10.2版"中"调整s

Oracle ADDM性能诊断利器及报告解读

性能优化是一个永恒的话题,性能优化也是最具有价值,最值得花费精力深入研究的一个课题,因为资源是有限的,时间是有限的.在Oracle数据库中,随着Oracle功能的不断强大和完善,Oralce数据库在性能方面实现自我诊断及优化的功能也越来智能化,这大大的简花了人工优化的脑力和体力的开销,尤其是借助ADDM自动诊断并给出调整建议.本文主要描述ADDM功能及特性. 一.ADDM的主要功能 ADDM全称是Automatic Database Diagnostic Monitor,是Oracle一个实现性