资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
OracleOracle 性能分析工具性能分析工具 Statpack 安装使安装使用详解用详解文件版本:文件版本:V1.0文件编号:文件编号:发布日期:发布日期:2015-03-05编编 制:制: 程万超程万超审审 核:核:批批 准:准:修订记录:修订记录:修订版本号修订版本号修订人修订人修订日期修订日期修订描述修订描述V1.0程万超2014-12-17新建简介简介Oracle Statspack 是用来诊断数据库性能的强有力的工具,通过 Statspack 我们很容易 的确定 Oracle 的所有瓶颈,记录数据库的性能状态。安装步骤安装步骤一、一、Statpack 原理:原理: 1.运行 oracle 自带脚本,生成一系列的统计表。 2.生成快照,采样。 3.根据快照生成报告。 二、安装准备二、安装准备 1.检查部分参数值 -job_queue_process:取值范围为 0 到 1000,总共可创建多少个 job 进程,为了能够建立 自动任务,执行数据收集,此参数大于零 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%rdbmsadmin(224 数据库的该目录为 /oracle/app/product/10.2.0/Db_1/rdbms/admin)目录下,oracle816 下是一组以 stat 开头的文 件,以后的版本是一组以 sp 开头的文件。 三、安装三、安装 1.shell 中切换到 oracle 用户:su - oracle 2.以 sysdba 身份登录 sqlplus。 9i 及以后版本,可以用 sys 用户以 sysdba 身份登录:sqlplus / as sysdba (最好转到脚本所有目录%oracle_home%rdbmsadmin,便于执行脚本)3.创建表空间,用于保存采样数据 create tablespace perfstat datafile /oradata/xdgl/perfstat.dbf(表空间存储路径) size 100m; Statspack 的报表数据还是相当占空间的,特别是在多次连续采样的情况下,所以不能 太小,最小 100M,否则创建对象会失败。 查询表空间:select file_name from dba_data_files;4.运行脚本,安装 statspack在 sqlplus 中执行命令: %oracle_home%rdbmsadminspcreate.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-“ *.LISUnix 下: grep ORA- *.lis grep err *.lis如果出现错误,可以运行脚本删除相关内容: %oracle_home%rdbmsadminspdrop.sql (注意:也要在 sysdba 下运行脚本删除相关对象) 然后再重新运行脚本安装。这个安装过程创建了一系列的表,用于存入采样数据。 查看新建表: select dt.table_name from dba_tables dt where dt.owner=PERFSTATconn perfstat/perfstat select table_name from user_tables;安装完成后,系统会自动切换到 perfstat 用户下。四、测试四、测试 statpack运行 statspack.snap 可以产生系统快照,运行两次,产生两次快照。SQL execute statspack.snap;PL/SQL 过程已成功完成。SQL execute statspack.snap;PL/SQL 过程已成功完成。然后执行脚本%oracle_home%rdbmsadminspreport.sql 就可以生成基于两个时间点的 报告。 -需要输入起始快照 ID 和结束快照 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; 五、规划自动任务五、规划自动任务 安装之后,我们就可以设置定时任务,定时采样,收集数据。使用脚本 spauto.sql 来定义自动任务。spauto.sql 在关键内容: beginselect 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 的执行出现在采样数据中) 六生成报告六生成报告 同测试一样 用 perfstat 用户连接 执行脚本%oracle_home%rdbmsadminspreport.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_idexecute statspack.snap(i_snap_level=0,i_modify_parameter=true); 通过这条语句,以后的收集级别都将是 0 级。如果你只是想修改本次收集级别,可以忽略 i_modify_parameter 参数,如下: SQLexecute statspack.snap(i_snap_level=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 函数我们可以改变门限的默认值: SQLexecute statspack.modify_statspack_parameter(i_buffer_get_th=100000,i_disk_reads_th=100000; 九九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. 后台等待事件(Backg
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号