oracle性能诊断―学习statspack笔记

上传人:自*** 文档编号:80507689 上传时间:2019-02-19 格式:DOC 页数:8 大小:67.30KB
返回 下载 相关 举报
oracle性能诊断―学习statspack笔记_第1页
第1页 / 共8页
oracle性能诊断―学习statspack笔记_第2页
第2页 / 共8页
oracle性能诊断―学习statspack笔记_第3页
第3页 / 共8页
oracle性能诊断―学习statspack笔记_第4页
第4页 / 共8页
oracle性能诊断―学习statspack笔记_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《oracle性能诊断―学习statspack笔记》由会员分享,可在线阅读,更多相关《oracle性能诊断―学习statspack笔记(8页珍藏版)》请在金锄头文库上搜索。

1、ORACLE性能诊断学习statspack笔记说明:oracle8.1.6开始引进statspack,statspack是诊断oracle性能的强有力的工具安装前准备A.首先是系统参数的确认:job_query_processes:为了建立自动任务,执行数据收集,该参数要大于0time_statistics:为了收集操作系统计时信息等,需要将其设置为TRUEB.建议最好是单独的为perfstat用户(即安装statspack要建的用户)单独建立数据表空间和临时表空间,数据表空间至少要有100M的空闲空间,否则创建statspack对象会失败,如果打算长期使用statspack,可以考虑建稍大些

2、的数据表空间。安装A.安装脚本安装的脚本所在目录是$ORACLE_HOME/rdbms/admin,在oracle8.1.6版本安装脚本是statscre.sql,之后8.1.7版本开始就是spcreate.sql,安装所需用户在9i之前的需要internal或者拥有sysdba权限的用户,9i需要的用户是sys(9i已经不存在internal用户了)执行安装脚本如下:SQL $ORACLE_HOME/rdbms/admin/spcreateB.在安装过程中,需要填写perfstat用户的密码,并且选择perfstat用户的数据表空间和临时表空间,安装完成之后,察看相应的.lis文件检查安装是

3、否正确无误,有问题可以通过spdrop.sql完成statspack的卸载,重新运行spcreate.sql完成statspack的安装。测试最简单的statspack报告生成,运行两次statspack.snap,然后运行spreport.sql生成一个基于两个时间点的报告。如果是8.1.7.3之前版本的Oracle,需要修改spcpkg.sql,要将substr修改为substrb,如下位置: select l_snap_id , p_dbid , p_instance_number , substr(sql_text,1,31) substrb(sql_text,1,31)建立简单的st

4、atspack报告过程如下:SQL execute statspack.snapPL/SQL procedure successfully completed.SQL execute statspack.snapPL/SQL procedure successfully completed.SQL $ORACLE_HOME/rdbms/admin/spreportSpreport的执行过程中会列出需要选择的快照,你需要填写该报告描述的开始和结束的快照序号,并填写报告的文件名,当然可以不填,使用默认的报告文件名,默认的会生成在目录$ORACLE_HOME/rdbms/admin中这样就可以验证s

5、tatspack已经正确的安装完成了自动收集statspack快照正常在真正的环境下,我们是需要连续的采样一段时间,这样生成的statspack才能更好的反映系统的现状,我们是可以通过spauto.sql来自动收集数据的。主要可能会设计到修改如下部分的内容variable jobno number;variable instno number;begin select instance_number into :instno from v$instance; dbms_job.submit(:jobno, statspack.snap;, trunc(sysdate+1/24,HH), tru

6、nc(SYSDATE+1/24,HH), TRUE, :instno); commit;end;/主要是修改1/24这个值,目前是一个小时自动收集一次数据,如果要改动为半个小时收集一次数据就修改为1/48,同理,进行或大或小的修改。执行后,可以在spauto.lis文件中看到当前自动收集数据的job号等信息。当想要生成statspack报告的时候,只要选择任何两个不跨越停机时间的快照序号就可以了。注意,statspack是不能跨越停机的。ORACLE性能诊断涉及对象A. 服务器、网络以及磁盘(外部的环境)B. 实例(SGA,后台进程)C. 对象(表,索引,段)D. SQLE. 设计(指的是应用

7、的设计,这部分一般说来是很难改变了)ORACLE性能诊断要遵循上面的顺序,先察看服务器是否存在问题,主要从CPU,RAM,DISK配置是否存在问题,检查操作系统的核心参数的设置等等;如果是跨地域的进行共享的多个ORACLE,网络通信性能也是非常的关键的,ORACLE利用的是TNS(Transparent Network Substrate 透明网络层)提供数据库之间的分布传输;另外影响ORACLE相应时间的最大的单独组成部分是磁盘I/O,能够减少磁盘I/O的任何事情都会对ORACLE的性能产生正面的影响,比如改变ORACLE初始化参数,调整相应的SQL等;对于ORACLE的实例调整应该注意的问

8、题是,过载的ORACLE的SGA会导致严重的性能问题,对于ORACLE实例的调整主要包括:初始化参数、数据缓冲存储(DEFAULT、KEEP、RECYCLE)和SGA中共享池和库缓存等;还有就是ORACLE对象的调整,包括存储参数等等;最后是SQL语句的调整。STATSPACK概述 STATSPACK来源在ORACLE最早版本就存在的UTLBSTAT和UTLESTAT工具。开始的BSTAT-ESTAT工具就可以直接从ORACLE的内存结构中获取信息。 STATSPACK通过获取数据库当前状态的快照来进行工作。大部分的情况,我们会规划一个以小时为单位来收集数据的JOB,并在需要的时候请求附加快照

9、。当我们获取快照时,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

10、 NOT NULL NUMBERINSTANCE_NUMBER NOT NULL NUMBERSTATISTIC# NOT NULL NUMBERNAME NOT NULL VARCHAR2(64)VALUE NUMBER 在理解STATSPACK工具的时候,很关键的是要明白通过STATSPACK快照收集的信息是累计值,从V$视图中收集到起始时间的数据库信息,然后进行持续累加,知道实例中止,我想,这也许就应该是STATSPACK不能产生两张跨越SHUTDOWN的快照的报告的原因吧。 对应STATSPACK存在一系列的STATSPACK表,不同的ORACLE版本会有一定的差异。这些表大体上分为控

11、制表、参数表、事件表、事务处理表、并行服务器表、概要表、系统表等等下面是我列出的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_PARE

12、NTSTATS$LATCH_MISSES_SUMMARYSTATS$LIBRARYCACHETABLE_NAME-Statspack 是 Oracle 提供的一个实例级的Tuning工具。很多DBA都喜欢用这个工具来进行数据库的优化调整。不过在交流中发现很多朋友对这个工具的的运用还有一些 问题。下面就其中比较容易出问题的几个方面进行一下简单的分析。 快照的采样时间间隔问题我们知道,Statspack的report实际上也就是对比两个快照 (Snapshot,也就是数据库当前状态 ) 得出的结果。 一般情况下,专家建议生成Statspack报告的快照时间间隔为15-30分钟。 试想,一个人去医院

13、看病,医生对其测量体温,一般也就是5-10分钟左右就可以了, 为什么是这麽长的时间?因为5-10分钟这段时间基本可以近似的得到你的体温。如果时间过短,可能达不到既定的目的,测到的体温会偏低,时间过长,甚至长达几 个小时的话(假设有这种情况),病人可能都昏迷几次了 ;) 。 对生成Statspack报告的快照时间间隔也是这样,如果两个Snap Time时间过短,数据 库的一些主要周期性事务可能还没有运行,信息收集不完全。如果间隔过长,数据一样会有偏差。 假设如下的情况:系统一直正常,但是最近几天有用户反映,在A时间段应用程序执行 很慢。B时间段正常,而 A时间段有一个主要的事务X运行(也是用户使用到的事务)。 B时间段有另外一个比较消耗资源的事务Y在运行。A和B时间段的跨度比较大。本来你的 快照如果覆盖A时间段内就已经能够的收集到比较准确的数据了,但不巧的是,你的Report 所用的两个Sna

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号