zoukankan      html  css  js  c++  java
  • 专题实验 Statspack & 9大动态视图

    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)

  • 相关阅读:
    C++解析(5):内联函数分析
    C++解析(4):引用的本质
    C++解析(3):布尔类型与三目运算符
    C++解析(2):进化后的 const 分析
    C++解析(1):C到C++的升级
    net与树莓派的情缘(二)
    net与树莓派的情缘(一)
    Ngin 简单配置文件
    sql geography类型(地理坐标) 赋值
    MongoDB与c#(二)简单例子 使用1.7版本驱动
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3794858.html
Copyright © 2011-2022 走看看