首页 > 数据库 > Oracle > 正文

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

2024-08-29 13:30:51
字体:
来源:转载
供稿:网友
注册会员,创建你的web开发资料库,
oracle性能诊断―学习statspack笔记(二)[概述]

 

作者:刘颖博

时间:2004-3-3

mail:[email protected],请指正

 

转载请注明出处及作者

 

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》

 

 

 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表