文档库 最新最全的文档下载
当前位置:文档库 › statspack详解

statspack详解

statspack详解
statspack详解

oracle statspack详解

这是我的学习笔记,根据eygle老师的及君三思的学习并整理的。

eygle老师的(原链接找不到了,放到我的共享里了):

https://www.wendangku.net/doc/494920426.html,/space/fi ... -002dv3.0.rar/.page

君三思的

https://www.wendangku.net/doc/494920426.html,/note/html/ ... tup_induction.shtml

全面介绍oracle statspack的原理,安装,使用,生成报告等过程和方法……。

oracle Statspack从Oracle8.1.6被引入,马上成为DBA和Oracle专家用来诊断数据库性能的强有力工具。通过Statspack我们可以很容易的确定Oracle数据库的瓶颈所有,记录数据库性能状态,也可以使远程技术人员迅速了解的的数据库运行状况。所以,了解和使用Statspack对于DBA来说至关重要。

在Statspack发布之前,我们经常用来诊断数据库的工具是两个脚本utlbstat.sql和utlestat.sql。BSTAT/ESTAT是一个非常简单的性能诊断工具。UTLBSTAT获得开始时很多V$视图的快照,UTLESTST 通过先前的快照和当前视图生成一个报表。实际上此报表相当于statspack的两个采样点。Statspack通过连续的采样,能够给我们提供很重要的趋势分析数据,这是一个巨大的进步。

所以,能够使用Statspack的环境,就尽量不使用BSTAT/ESTAT方式来诊断数据库问题。(Oracle816以前的版本使用Statspack,需要使用statscbps.sql脚本建立一个

V$buffer_pool_statistics视图。可以到oracle网站上下载。)

+++

原理:

---

1,运行oracle自带脚本,生成一系列的统计表。

2,生成快照,采样(运行statspack.snap可生成快照,一般通过自动任务生成快照)

3,根据快照生成报告

+++

一,准备

---

1,检查部分参数值

--job_queue_process:为了能够建立自动任务,执行数据收集,此参数必须大于0

alter system set job_queue_processess=6;

---timed_statistics,设置为true,使收集的时间信息存储在V$sessstats和V$sysstats等动态性能视图中,但会消耗资源,可以在使用Satspack之前设为true,采样过后,把该参数动态修改为false. alter system set timed_statistics=true;

2,脚本

使用此功能,需要运行oracle自带脚本,在数据库中生成一系列的表和视图,用于收集各种信息。

脚本位于%oracle_home%\rdbms\admin目录下,oracle816下是一组以stat开头的文件,以后的版本是一组以sp开头的文件。

+++

二,安装

---

1,以sysdba身份登录。

8i可以用internal用户登录:sqlplus internal

9i及以后版本,可以用sys用户以sysdba身份登录:sqlplus / as sysdba

(最好转到脚本所有目录%oracle_home%\rdbms\admin,便于执行脚本)

2,创建表空间,用于保存采样数据

create tablespace perfstat datafile 'e:\hs01\dat\perstat.ora'

size 100m

extent management local;

Statspack的报表数据还是相当占空间的,特别是在多次连续采样的情况下,所以不能太小,最小100M,否则创建对象会失败。

3,运行脚本,安装statspack

Oracle816:%oracle_home%\rdbms\admin\statscre.sql

816以后:%oracle_home%\rdbms\admin\spcreate.sql

--脚本会创建用户perfstat,需要指定此用户密码。

输入perfstat_password 的值: perfstat

--需要输入用户perfstat使用的表空间:指定新建的表空间即可。

输入default_tablespace 的值: perfstat

--需要指定用户perfstat使用的临时表空间。

输入temporary_tablespace 的值: tmp10

--安装成功,可以看到如下信息:

Creating Package STATSPACK...

程序包已创建。

没有错误。

Creating Package Body STATSPACK...

程序包体已创建。

没有错误。

NOTE:

SPCPKG complete. Please check spcpkg.lis for any errors.

--查看错误信息

NT下:

host find "ORA-" *.LIS

host find "err-" *.LIS

Unix下:

grep ORA- *.lis

grep err *.lis

如果出现错误,可以运行脚本删除相关内容:@%oracle_home%\rdbms\admin\spdrop.sql (注意:也要在sysdba下运行脚本删除相关对象)

然后再重新运行脚本安装。

这个安装过程创建了一系列的表,用于存入采样数据。

查看新建表:

select dt.table_name from dba_tables dt where dt.owner='PERFSTAT'

conn perfstat/perfstat

select table_name from user_tables;

+++

三,测试statspack

---

用perfstat用户连接

(如果你刚执行完@spcreate,则oracle默认将当前用户切换为perfstat 。)

运行statspack.snap可以产生系统快照,运行两次,产生两次快照。

SQL> execute statspack.snap;

PL/SQL 过程已成功完成。

SQL> execute statspack.snap;

PL/SQL 过程已成功完成。

然后执行脚本%oracle_home%\rdbms\admin\spreport.sql就可以生成基于两个时间点的报告。--需要输入起始快照ID和结束快照ID,以及报告文件名。

Specify the Begin and End Snapshot Ids

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

输入begin_snap 的值: 1

Begin Snapshot Id specified: 1

输入end_snap 的值: 13

End Snapshot Id specified: 13

输入report_name 的值: e:\s1report.txt

如果一切正常,说明安装成功。

--查看产生的快照

select t.snap_id,to_char(t.snap_time,'yyyy-mm-dd hh:mi:ss') as

S_Time,t.snapshot_exec_time_s from STATS$SNAPSHOT t;

+++

四,规划自动任务

---

安装之后,我们就可以设置定时任务,定时采样,收集数据。

1,使用系统脚本

使用脚本spauto.sql来定义自动任务。

spauto.sql在关键内容:

begin

select instance_number into :instno from v$instance;

dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'),

'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);

commit;

end;

执行spquto,就建立了一个每小时执行一次的数据收集计划。

这个Job任务定义了收集数据(执行statspack.snap)的时间间隔为1小时:

一天24小时,1440分钟-->

1/24,'HH' 每小时一次

1/48,'MI' 每半小时一次

1/144,'MI' 每10分钟一次

1/288,'MI' 每5分钟一次

关于采样间隔,通常建议1小时,如有特殊需要,可以设置更短,如半小时。但不推荐更短。因为statpack 的执行本身需要消息资源,太短的采样对系统的性能会产生较大的影响(甚至会使statspack的执行出现在采样数据中)

2,使用自定义语句

1)可以用以下语句创建一个job,我们设定其每个小时自动收集一次采样。

Variable job number ;

begin

dbms_job.submit(:job, 'statspack.snap;' ,trunc( sysdate + 1 / 24 , 'hh24' ),

'trunc(sysdate+1/24,''hh24'')' );

commit ;

end ;

/

查看当前job

set linesize 120

col schema_user for a12

col what for a20

col interval for a15

col next_d for a18

SQL> select job,schema_user,to_char(next_date,'yyyymmdd hhmiss') as

next_D,interval,what from user_jobs;

JOB SCHEMA_USER NEXT_D INTERVAL WHAT

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

41 PERFSTAT 20100324 030000 trunc(sysdate+1 statspack.snap;

/24,'hh24')

2)再创建一个job,让它在第二天凌晨自动停止采样job的执行。

查出job编号,执行以下语句

Variable job number ;

begin

dbms_job.submit(:job, 'dbms_job.broken(41,true);' ,trunc( sysdate + 1 ), 'null' );

commit ;

end ;

/

--查看任务

set linesize 120

col schema_user for a12

col what for a20

col interval for a15

col next_d for a18

select job, next_date, next_sec, what from user_jobs;

select job,schema_user,to_char(next_date,'yyyymmdd hhmiss') as next_D,interval,what

from user_jobs;

--查看产生的快照

select t.snap_id,to_char(t.snap_time,'yyyy-mm-dd hh:mi:ss') as

S_Time,t.snapshot_exec_time_s from STATS$SNAPSHOT t;

+++

五,生成报告

同测试一样

用perfstat用户连接

执行脚本%oracle_home%\rdbms\admin\spreport.sql,输入起始快照ID和结束快照ID,以及报告文件名,生成statspack报告。

一次statspack报告不能跨越一次停机,但是之前或之后的连续区间,收集的信息依然有效,你可以选择之前或之后的采样生成report.

如果中间停过机,会收到以下错误信息:

第1 行出现错误:

ORA-20200: The instance was shutdown between snapshots 1 and 31

ORA-06512: 在line 48

+++

六,后续处理

1,移除定时任务

当你完成一个采样报告,你应该及时移除这个job任务。遗漏一个无人照顾的job是非常危险的……

--查看任务并移除任务

select job, next_date, next_sec, what from user_jobs;

execute dbms_job.remove('ID')

2,删除历史数据

1),删除采样数据

只要删除stat$snapshot数据表中的相应数据,其他表中的数据会相应的级连删除。

select max(snap_id) from stats$snapshot;

delete from stats$snapshot where snap_id<=166;

删除过程中,你可以看到所有相关的表都被锁定了。

select a.object_id, a.oracle_username, b.object_name

from v$locked_object a,dba_objects b

where a.object_id=b.object_id

2),truncate统计信息表:使用脚本sptrunc.sql删除所有的采样数据但保留statspack的库结构。

如果有大量数据,直接delete采样数据是非常缓慢的。使用脚本sptrunc.sql可以快速的删除所有统计信息。

查看脚本,可以看出是用truncate table截掉所有相关的表中的内容。

truncate table STATS$FILESTATXS;

truncate table STATS$TEMPSTATXS;

...

delete from STATS$DATABASE_INSTANCE;

3),删除statspack所有数据和各种对象:使用脚本spdrop.sql。全部删除,不留痕迹!但有表空间在~~

+++

七,其它重要脚本

---

1,spuexp.par,数据导出用参数文件。主要内容如下:

file=spuexp.dmp log=spuexp.log compress=y grants=y indexes=y rows=y constraints=y owner=PERFSTAT consistent=y

我们可以使用以下命令导出:

exp perfstat/perfstat parfile=spuexp.par

例:

E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN>exp perfstat/perfstat parfile=spuexp.par 2,删除数据脚本:spdtab.sql--删除表及同义词。spdusr.sql删除用户

3,oracle92新增脚本

1)用于升级statspack对象的脚本,需要sysdba权限,升级前请先备份存在的schema数据。

spup90.sql:用于升级9.0版本的模式至9.2版本

spup817.sql:如果从statspack8.1.7升级,需要运行这个脚本

spup816.sql:从statspack8.1.6升级,需要运行这个脚本,然后运行spup817.sql。

2)sqrepsql.sql 用于根据给定的SQL Hash值生成SQL报告

+++

九,调整statspack的收集门限

---

statspack有两种类型的收集选项

level--级别:控制收集数据的类型

threshold--门限:设置收集的数据阀值

都保存在表stats$statspack_parameter中

1,级别(level)--有三种快照级别,默认值为5

--查看当前level级别:

select snap_level from stats$statspack_parameter;

1)level=0:一般性能统计。包括等待事件,系统事件,系统统计,回滚段统计,行缓存,SGA,会话,锁,缓冲池统计等等。

2)level=5:在level0的基础上,增加SQL语句的收集。SQL语句收集结果记录在ststs$sql_summary 表中。

3)level=10:增加子锁统计,包括level5的所有内容,还会将附加子锁的入stats$latc_children表中。使用这个级别需要慎重,建议在oracle support的指导下进行。

可以通过statspack包修改缺省的级别设置,如:

SQL>execute statspack.snap(i_snap_level=>0,i_modify_parameter=>'true');

通过这条语句,

以后的收集级别都将是0级。

如果你只是想修改本次收集级别,可以忽略i_modify_parameter参数,如下:

SQL>execute statspack.snap(i_snap_level=>10); (???是10么?)

2,快照门限--只应用于stats$sql_summary表中获取的Sql语句。

因为每一个快照都会收集很数据,及sql语句,所以stats$sql_summary很快就会成为statspack中最大的表。

--查看当前各种门限

select executions_th,disk_reads_th,parse_calls_th,buffer_gets_th from

stats$statspack_parameter;

各种门限:

1)executions_th--sql语句执行的数量(默认值=100)

2)disk_reads_th--sql语句执行的磁盘读入数量(默认值=1000)

3)parse_calls_th--sql语句执行的解析调用数量(默认值=1000)

4)buffer_gets_th--sql语句执行的缓冲区获取数量(默认值=10000)

任何一个门限值超过以上参数就会产生一条记录。

通过调用statspack.modify_statspack_parameter函数我们可以改变门限的默认值:

SQL>execute

statspack.modify_statspack_parameter(i_buffer_get_th=>100000,i_disk_reads_th=>1000 00;

+++

十,Statspack 报告分析

---

Statspack 报告分为如下部分

1. 数据库总体信息

含实例、版本、是否RAC、CPU、物理内存、oracle内存设置等等

2. 每秒每事务的资源消耗情况

3. 实例的各组件的命中率

4. 共享池总体情况(Shared Pool Statistics)

5. 等待时间最长的前5个等待事件(Top 5 Timed Events)

含前5等待事件,两次采样间cpu占用,内存分配等信息。Oracle各版本等待事件并不完全相同,数量依版本升高而增加,关于各项等待事情的说明,三思之前的"学习动态性能表"系列文章中有过介绍,有心的朋友可以去搜搜看。

6. DB 所有等待事件(Wait Events)--Total wait time>=0.001 的事件。

7. 后台等待事件(Background Wait Events)--Total wait time>=0.001 的事件。

8. 柱状显示的等待事件(Wait Event Histogram)--显示各等待事件不同响应时间的比例

9. 根据CPU开销进行排序的SQL(SQL ordered by CPU)

10. 根据执行时间进行排序的SQL(SQL ordered by Elapsed)

11. 根据BufferGets进行排序的SQL(SQL ordered by Gets)

12. 根据物理读进行排序的SQL(SQL ordered by Reads)

13. 根据执行次数排序的SQL(SQL ordered by Executions)

14. 根据解析调用次数排序的SQL(SQL ordered by Parse Calls)

15. 实例记录的各项活动的统计数据(Instance Activity Stats)

16. 表空间的IO统计(Tablespace IO Stats)

17. 数据文件的IO统计(File IO Stats)

18. 数据文件读柱状图形式统计(File Read Histogram Stats)

19. Buffer 池统计数据(Buffer Pool Statistics)--含实例恢复的统计数据,buffer池大小设置建议等等。

20. PGA 统计数据(PGA Aggr Target Stats)--含PGA缓存命中率,柱状图形式的统计以及PGA设置建议等等。

21. 进程的内存占用情况(Process Memory Summary Stats)--含占用内存较多的进程等。

22. undo 段摘要

23. undo 段统计

24. 锁存器的当前情况

25. 锁存器睡眠等待统计

26. 锁存器失败情况

27. 数据字典cache性能统计(Dictionary Cache Stats)

28. 库缓存的活动情况(Library Cache Activity)

29. Rule 集(Rule Sets)

30. 共享池设置建议(Shared Pool Advisory)

31. SGA 摘要(SGA Memory Summary)

32. SGA 统计信息(SQL Memory Statistics)

33. 系统参数(init.ora Parameters)

报告很长,确实非常全面。如何分析,还需要再学习……

信息的收集与整理

课型 新授课 课题 信息的收集与整理 教学目标 知识目标 理解信息收集、信息整理过程 能力目标 能通过案例分析,学会如何进行信息收集与整理 情感目标 合作和自主学习 重点 信息的收集信息的整理 难点 引入时,教师要结合信息技术的相关知识给学生讲解,并通过其他例子进行说明;在信息收集中,信息源与信息类型设计学生不容易明白。通过互联网、图书馆等方式进行收集与整理本学习小组设计所需信息。 教学方法 合作学习,自主学习,归纳法 课时安排 1 教具 Powerpoint课件、互联网 板书设计 设计产品需要信息;产品载体携带信息。 信息收集 信息整理 从化二中通用技术必修1教学教案 第三章怎样进行设计 第三节信息的收集与整理 学情及教材分析 学生情况 教学措施 学生通过信息技术课程学习,基本掌握了如何进行信息的收集与整理的方法,但就一特定的设计问题应该收集什么信息,如何进行信息整理,没有形成能力。 该课时安排在电子阅览室或电脑机房上,主要以任务驱动模式进行教学。 教材分析

教学措施 信息收集与整理是制定设计方案的第一步,收集与整理信息,既能合理利用前人的设计成果,避免走设计弯路,又能针对前人的设计缺陷做改进设计,发展学生自己新的想法与构思,使本小组的设计产品具有新颖性与独特性。 引入部分,通过学生自身学习经验,思考问题:设计产品需要信息;产品载体携带信息。信息收集教学中,通过图表,用列举法说明信息收集的方式、方法、内容、要求。在信息整理教学中,通过列举法说明信息整理方式、方法 教学程序 步骤 师生活动 设计意图 及反思 引入 新课 一、 信 息 的 收 集 上两节课我们学习了设计的第一步,发现问题及与此相关的知识点,并通过小组活动,确定了本小组的设计项目。作业完成情况如何? 本节,我们开始学习方案的制定。 设问:我们常用"眼观六路,耳听八方"来形容司机在开车时的专注,我们考试时,保持头脑清楚才能保证考试结果令人满意。请思考一下为何如此专注? 学生活动:思考并回答,须处理大量信息,不专注难以完成。

第二讲 就业信息的收集与整理复习过程

第二讲就业信息的收集与整理

第二讲就业信息的收集与整理 教学内容 1、大学生需要收集了解的就业信息; 2、获取就业信息的渠道及各个渠道收集信息情况的区别; 3、如何选择适合学生自己的就业信息; 4、如何处理收集的就业信息。教学目的 通过对就业信息收集渠道、范围、如何有针对性收集及收集后的有效处理等内容的学习和讨论,提高大学生对就业信息收集重要性的认识,使学生初步建立收集就业信息的意识,逐步让学生养成关注信息、了解信息、运用信息的习惯,同时让学生在收集整理信息的过程中,明晰个人就业意向、正确认识个人素质与岗位素质要求的差距,从而及早有针对性地提高个人的素质、能力,为顺利就业奠定良好的基础。 教学重点就业信息获取的渠道及内容 教学难点如何处理收集的就业信息

求职择业不仅取决于体力和能力等诸多因素,而且也取决于就业信息。一个人如果掌握了大量信息,他的择业视野就会广阔,就能比较稳妥的掌握自己的命运,争取主动权,不失良机的选择自己的位置。一个人如果视听闭塞、信息失灵,就会盲目的、糊涂的从事某种工作。随着就业制度的改革,择业者越来越清楚的认识到信息是择业的基础,是通往用人单位的桥梁,谁获得信息,就获得主动权;谁失去信息,就失去主动权。可以说,信息是关系到事业兴衰、成败的大问题。 一、收集什么就业信息? 就业信息的内容十分广泛,作为初次择业的大学毕业生应主要了解以下三个方面的就业信息: 1.就业政策 第一,了解国家就业方针、原则和政策。就业政策毕业生就业的出发点和归宿,是不能违背的。 第二,了解相关的就业法律法规。了解法律法规,依法办事,不仅可以取得合法权益,而且可以捍卫自己的正当权利,减少不必要的损失。作为大学毕业生来说就必须清楚地了解就业法规、法令,学会用法律来保护自己。目前已出台和施行的有《中华人民共和国劳动法》、《反不正当竞争法》、《劳动合同法》等。 第三,地方的用人政策。各地区、各单位根据国家的有关规定,结合本地区的情况,对毕业生的引进、安排、使用、晋升、工资、待遇等制定了一系列更为具体的规定。不少地区为了吸引人才,还制定了许多优惠政策,这是大学毕业生应该了解的。

信息的收集与整理教学设计

信息的收集与整理 学习内容分析: 本节课讲授的是“信息的收集与整理”这一内容。这一教学内容与第一节“发现与明确问题”教学内容有紧密的关系。这是设计过程中的第二阶段,是至关重要的一个环节。 本节课是在围绕“多用途广告宣传灯设计”这一主题条件下,进行资料的收集、整理。在本节课之前学生们各自都已分好小组,已相互讨论并定下了自已小组是介绍多用途广告宣传灯的哪个方面的。所以在小组长的带领及同学相互之间讨论合作的前提下,在搜索之前教师提供学生们一些参考的网站,并将学生难以收集到的视频文件放在平台上让学生去下载。相信通过这些方法和手段,学生们的搜索目的更加明确,搜索的途径更加多样化,效率也会相应的有所提高,尽可能的减少和避免以往操作中存在的缺陷。并且学生们都知道自己现在收集到的资料都是为以后的制作做准备的,以便以后使用。 教学目标: 知识与技能: 通过学生对提出的问题进行网络资源的搜集,掌握信息搜集、整理和分析的方法并会应用,培养学生的想象能力和推理能力。 过程与方法: 通过课本上关于“多用途广告宣传灯设计”激发学生上网等

搜集信息,然后通过任务法驱动来完成信息的整理。 情感态度与价值观: 1、能利用多种方法解决实际问题的能力,逐步形成基本的信息素养; 2、学生通过探究,渗透爱国主义教育和环保意识,养成勇于探索的创新意识和自主学习的能力。激发学生对技术课的兴趣,培养学生爱国主义精神、热爱自己生活的精神,培养学生互相协作的精神。 教学难点与重点: 1、收集归纳整理信息的准确性。 2、通过问题,激发学生获取信息的欲望,并学会上网搜集信息、整理信息。 教学方法: 任务驱动法、小组合作法、自主探究法 教学资源: (一)、多媒体应用,拓展学生知识面,变抽象为具体。 (二)、自主探究,有利合作。 教学过程: 创设情境,引入课题: 今天,老师带来这样一组画面和大家一起分享。说说你看到了什么,听到了什么,想到了什么?(播放视频文件《便携式小板凳》的收集信息

相关文档