statspack 是一个DBA经常用的调优工具, 它的主要作用是, 针对数据库的不同时刻做快照, 然后来比对快照之前的差异和瓶颈, 快照可以是手动的也可以是自动的, 从 oracle 10g开始, oracle推出了新工具-自动负载信息库( automatic workload repository, AWR), AWR 是用来替换statspack的, 实现的原理与statspack基本相同, 只是功能更强大, 在 11g中继续加强.

Statspack 概述 及安装

在数据库中 Statspack 初始并未安装.

Statspack 脚本文件位于 $ORACLE_HOME/rdbms/admin目录下, 在使用授权上, Statspack 的重点是免费, 而 AWR工具涉及的很多特性都是需要进行收费的.

首先设置两个系统参数,

job_queue_processes: 为了能够建立自动任务, 执行数据收集, 该参数需要大于 0, 你可以在初始化参数文件中修改该参数. alter system set job_queue_process = 6 scope=both;

timed_statistics: 设置该参数为true时, oracle将实时收集操作系统的计时信息, 这些信息可被用来显示时间等统计信息, 优化数据库和SQL语句. (建议设置成 true) alter system set timed_statistics = true scope=both;

安装时需要使用 sys用户以 sysdba身份登录到数据库安装; 安装需要再数据库服务本地进行.

1) 由于 statspack 需要一定的存储空间, 最好建立独立的表空间

( create tablespace perfstat datafile ‘/u01/oracle/ora10g/oradata/leon/perfstat.dbf’ size 500M extent management local;(最小也要100M)

2) 找到安装脚本 在 rdbms/admin目录下

sql提示符下: 输入 @spcreate ( 如果不在当前目录下, 需要输入脚本路径 ), 期间会提示你输入缺省表空间和临时表空间, 输入perfstat 和 数据库的临时表空间即可: 另外还需要输入passwork, 就输入跟用户名一样吧, 因为向后也可以修改, 这个好记.

可以查看 host ls *.lis 查看安装的状态脚本, 看是否有错误, 直接 grep ORA- *.lis, grep err *.lis 就可以了, 如果在这一步出现错误, 那么我们就要先删除已经创建的内容, 然后确认错误, 再重新创建:

@spdrop.sql

测试 Statspack

sql提示符下: execute statspack.snap 过一会再输入一次 execute statspack.snap, 然后输入 @spreport.sql

规划自动任务

spauto.sql (注意这些脚本都是rdbms/admin 这个目录下), 首先来看看这个脚本内容:

dbms_job.submit(:jobno, ‘statspack.snap;’, trunc(sysdate+1/24,’HH’), ‘TRUNC(SYSDATE+1/24,’HH’),TRUE, :instno);

可以修改 spauto.sql 来更改执行的时间间隔, 然后执行 @spauto, 这样就建立了一个每间隔1小时执行一次数据收集计划, 可以查看 spauto.lis 来获得输出信息: 关于采样间隔, 通常建议1小时间隔, 对于特殊需要的环境, 可以设置更短的, 例如半小时, 但是不建议使用更短. 对于实时问题诊断, 需要采样分析, 那么可以根据具体需要手动执行.

移除定时任务:

1) 首先找到想要移除的任务: select job, log_user, priv_user, last_date, next_date, interval from user_jobs;

2) execute dbms_job.remove(‘22’)  -- 22为 job

当完成了一个采样报告, 就应该移除这个job任务, 在生产环境中, 遗漏一个无人照顾的job是非常危险的.

生成分析报告

@spreport, 然后需要输入一个文件名, 例如 rep1205.txt

删除历史数据:

select max(snap_id) from stats$snapshot;

delete from stats$snapshot where snap_id <= 166;

可以更改 snap_id 的范围以保留需要的数据.

另外还提供一个 truncate 采样的脚本, sqtrunc.sql (如果采样了当量的数据, 直接delete是非常缓慢的, 考虑直接使用这个脚本)

statspack 有两种收集类型选项, 级别(level)和门限(threshold), 其中级别用于控制收集数据的类型,

level0, 包含一些统计数据, level5较之前级别增加了sql语句信息, level10增加更多统计信息)

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

sql 提示符下: execute statspack.snap(i_snap_level=>0, i_modify_parameter=>’true); 通过这样设置, 以后收集级别都将是 0, 如果只是想本次改变收集级别, 可以忽略 i_modify_parameter参数, execute statspack.snap(i_snap_level=>10);

Statspack 报告各部分说明

1 部分, 数据库概要

2 部分, 负载概要 这部分信息来自 v$sysstat

3 部分, 实例效率百分比

4 部分, 数据库响应时间

5 部分, 主机系统信息

最重要的九大性能视图

1. 和 session 相关的主要视图 v$session->v$session_wait

2. 和 session 级统计信息相关的视图 v$sesstat->v$sysstat

3. 和 等待事件相关的主要视图 v$session_event->v$system_event

4. 其他, v$process, v$latch_children, v$lock, SQL相关(v$sql, v@sqltext), Buffer信息(v$bh)

专题实验 Statspack & 9大动态视图的更多相关文章

  1. Spring专题1: 静态代理和动态代理

    合集目录 Spring专题1: 静态代理和动态代理 为什么需要代理模式? 代理对象处于访问者和被访问者之间,可以隔离这两者之间的直接交互,访问者与代理对象打交道就好像在跟被访者者打交道一样,因为代理者 ...

  2. oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系

    前言:在oracle运维的过程中,经常会使用到一些以V$开头的动态视图,比如V$session, 有一次偶然看到有人用V_$session, 初以为别人写错了,没想到desc v_$session以后 ...

  3. <十五>UML核心视图动态视图之活动图

    一:动态视图 --->动态视图是描述事物动态行为的. --->需要注意的是:动态视图不能够独立存在,它必需特指一个静态视图活uml元素,说明在静态视图规定的事物结构下它们的动态行为. -- ...

  4. 实验二 JSP基本动态元素的使用

    实验二  JSP基本动态元素的使用 实验性质:验证性          实验学时:  2学时      实验地点: 一 .实验目的与要求 1.掌握JSP中声明变量.定义方法.java程序片及表达式的使 ...

  5. oracle主要的动态视图与基表的对应关系

    动态视图 基表 GV$ACCESS x$ksuses,x$kglob,x$kgldp,x$kgllk GV$ACTIVE_INSTANCES x$ksimsi GV$ACTIVE_SESS_POOL_ ...

  6. Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

    封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 ... 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨 ...

  7. vue 专题 vue2.0各大前端移动端ui框架组件展示

    Vue 专题 一个数据驱动的组件,为现代化的 Web 界面而生.具有可扩展的数据绑定机制,原生对象即模型,简洁明了的 API 组件化 UI 构建 多个轻量库搭配使用 请访问链接: https://ww ...

  8. Qt 学习之路 :动态视图

    Repeater适用于少量的静态数据集.但是在实际应用中,数据模型往往是非常复杂的,并且数量巨大.这种情况下,Repeater并不十分适合.于是,QtQuick 提供了两个专门的视图元素:ListVi ...

  9. 专题实验 EXP & IMP

    导入导出时 oracle 提供的实用工具, 如果这些被导出的对象还存在其他的相关对象, 比如要被导出的表上还存在索引, 注释等, 则导出工具会自动将这些相关的对象也提取出来, 并放入到导出的文件中去. ...

随机推荐

  1. Linux命令-用户管理:useradd,userdel,usermod,id,su,env,exit

    添加一个linux用户之后,相当于在linux系统里面创建了如下文件: 添加一个用户(默认也会创建一个同名的用户组,在linux下面用户默认必须在一个用户组里面): useradd wyp 添加用户w ...

  2. 工作总结 Mapper.Map 映射 AutoMapper

    对象映射工具 //1.创建映射规则  ,第一个参数为源实体(Model),第二个为目标实体(DTO) Mapper.CreateMap<studentSource, studentPurpost ...

  3. WebApi和MVC的区别

    使用上区分,mvc主要用于建站,web api主要用于构建http服务,当然你非要用mvc来构建Uri式的Api也行,不过显然是没有这个必要的,一个不恰当的比喻就像是你也可以玩破解版的单机游戏,也可以 ...

  4. MVC中JSON字符长度超出限制

    本文导读:在MVC中通过JsonResult返回JSON字符串时,如果字符串长度过长,会抛出使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 ...

  5. Error_GL_KeyflexfieldDefinitionFactory.getStructureNumber无法找到应用产品

    2014-07-12 BaoXinjian

  6. Unix环境高级编程(十)信号续

    1.signal函数 Unix系统的信号机制最简单的接口是signal函数,函数原型如下: #include <signal.h> typedef void (*sighandler_t) ...

  7. 《TCP/IP具体解释卷2:实现》笔记--选路请求和选路消息

    内核的各种协议并不直接使用前面提供的函数来訪问选路树,而是调用几个函数:rtalloc和rtallocl是完毕路由表查询的两个 函数:rtrequest函数用于加入和删除路由表项:另外大多数接口在接口 ...

  8. jenkins job构建后汇总结果到同一个文本文档中去

    jenkins 构建后,执行下shell脚本,把结果汇总到同一个文件中,这样多个job构建后的结果可以在一个文件中展示 result_all_dir="/app/jenkins_result ...

  9. 如何让div在整个页面中居中?

    参考必应主页的样式,在页面中放置一个表格,100%宽高,然后表格内部是一个单元格,在单元格内部放置div,使其margin为auto即可. <table style="height: ...

  10. JS 中document.URL 和 windows.location.href 的区别

    实际上,document 和 windows 这两个对象的区别已经包含了这个问题的答案. document 表示的是一个文档对象,windows 表示一个窗口对象.  一个窗口下面可以有很多的docu ...