ASH和AWR的关系

ASH以V$SESSION为基础,每秒採样一次,记录活动会话等待的事件。不活动的会话不会採样,採样工作由新引入的后台进程MMNL来完毕。

ASH内存记录数据始终是有限的,为了保存历史数据,引入了自己主动负载信息库(Automatic Workload Repository ,AWR) 由后台进程MMON完毕。ASH信息相同被採集写出到AWR负载库中。因为内存是有限的,所以MMNL进程在ASH写满后会将信息写出到AWR负载库中。ASH也不是写出所有数据导AWR,所一般仅仅写入收集的10%的数据量,并且使用direct-path insert完毕,尽量降低日志的生成,从而最小化数据库性能影响。

总结一下:AWR是依据snapshot採样间隔来进行系统总体性能推断的。而ASH的粒度更细。比方你的AWR是1小时採样一次,可是假设一个故障只持续了5分钟,之前和之后数据库都正常,那么这5分钟究竟发生了什么,要去看ASH。

我们在监控数据库时,假设是当前正在发生的问题,我们能够通过v$session+v$sqlarea来找出性能最差的SQL语句。假设在一个小时以内发生的我们能够通过生成ASH报告来找出SQL.假设是1小时以上或几天我们能够通过AWR报告来找出几小时,几天以来最影响系统的SQL语句。ADDM报告基于AWR库,默认能够保存30天的ADDM报告。

    我们也能够直接查询试图:

    v$session                                     (当前正在发生)

    v$session_wait                           (当前正在发生)

    v$session_wait_history             (会话近期的10次等待事件)

    v$active_session_history          (内存中的ASH採集信息,理论为1小时)

    wrh$_active_session_history    (写入AWR库中的ASH信息,理论为1小时以上)

    dba_hist_active_sess_history   (依据wrh$_active_session_history生成的视图)

ASH的生成

运行例如以下脚本生成ASH报告:
@?/rdbms/admin/ashrpt.sql
1. 你是一路回车,就是获取近期15分钟的ASH报表。
2. 你依据oldest ash sample available 时间,然后回车,选择的是眼下能够收集到的最长ASH执行情况
3. 你能够选择Oldest ASH sample available和Latest ASH sample available之间时间,然后输入时长,比方30表示30分钟,取你要取的不论什么时段的ASH报表

ASH报表也能够直接手工获取,比方select output from table(dbms_workload_repository.ash_report_html( dbid,inst_num,l_btime,l_etime);

演示样例:
set pagesize 0
set linesize 121
spool d:\ash_rpt.html
select output from table(dbms_workload_repository.ash_report_html( 977587123,1,SYSDATE-30/1440,SYSDATE-1/1440));
spool off --包具体參数:
dbms_workload_repository.ash_report_html(
l_dbid IN NUMBER,
l_inst_num IN NUMBER,
l_btime IN DATE,
l_etime IN DATE,
l_options IN NUMBER DEFAULT 0,
l_slot_width IN NUMBER DEFAULT 0,
l_sid IN NUMBER DEFAULT NULL,
l_sql_id IN VARCHAR2 DEFAULT NULL,
l_wait_class IN VARCHAR2 DEFAULT NULL,
l_service_hash IN NUMBER DEFAULT NULL,
l_module IN VARCHAR2 DEFAULT NULL,
l_action IN VARCHAR2 DEFAULT NULL,
l_client_id IN VARCHAR2 DEFAULT NULL,
l_plsql_entry IN VARCHAR2 DEFAULT NULL)

[Oracle] - 性能优化工具(2) - ASH的更多相关文章

  1. [Oracle] - 性能优化工具(3) - ADDM

    ADDM 通过检查和分析AWR获取的数据来推断Oracle数据库中可能的问题.并给出优化建议. 获取ADDM的方法例如以下: @?/rdbms/admin/addmrpt.sql 以下能够看一个样例: ...

  2. [Oracle] - 性能优化工具(1) - AWR

    AWR快照 默认情况下,Oracle每隔一小时会自己主动产生一个快照,保存近期8天的快照. 我们能够通过例如以下语句获得产生快照的时间间隔和保存的天数: SYS@orcl(lx15)> sele ...

  3. [Oracle] - 性能优化工具(5) - AWRSQL

    在AWR中定位到问题SQL语句后想要了解该SQL statement的详细运行计划,于是就用AWR报告中得到的SQL ID去V$SQL等几个动态性能视图中查询,但发现V$SQL或V$SQL_PLAN视 ...

  4. [Oracle] - 性能优化工具(4) - AWRDD

    AWRDD是用于比較两个AWR快照,从而获得不同一时候期的性能. 运行例如以下语句获得AWRDD: @?/rdbms/admin/awrddrpt.sql 2025 23 2月 2014 07:12 ...

  5. Oracle 性能优化的基本方法

    Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...

  6. 【转载】我眼中的Oracle性能优化

    我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...

  7. PHP性能优化工具–xhprof安装

    PHP性能优化工具–xhprof安装,这里我先贴出大致的步骤: 1.获取xhprof 2.编译前预处理 3.编译安装 4.配置php.ini 5.查看运行结果 那么下面我们开始安装xhprof工具吧: ...

  8. 降低磁盘IO使Oracle性能优化(转)

    文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...

  9. PLSQL_性能优化工具系列16_Best Practices: Proactively Avoiding Database

    占位符 PLSQL_性能优化工具系列_Best Practices: Proactively Avoiding Database/Query Performance Issue

随机推荐

  1. fopen警告处理方式

    warning C4996: “fopen”被声明为否决的 问题:vs2005中编程时,遇到如下: warning C4996: “fopen”被声明为否决的. 解释:微软的警告,主要是那些都是C库的 ...

  2. effective c++:virtual函数在构造函数和析构函数中的注意事项

    如不使用自动生成函数要明确拒绝 对于一个类,如果你没有声明,c++会自动生成一个构造函数,一个析构函数,一个copy构造函数和一个copy assignment操作符. class Empty { p ...

  3. Flex通信-与Java实现Socket通信实例

    Flex通信-与Java实现Socket通信实例  转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...

  4. 安卓手机修改hosts攻略-摘自网络

    Android手机是和Google帐号紧密联系的,由于$^&情况,很多时候Google帐号无法登录,导致Android市场无法使用.在电脑上我们通过修改Hosts方法可以解决Google帐号的 ...

  5. openfire 最大连接数调优

    https://community.igniterealtime.org/thread/48064#224126 https://community.igniterealtime.org/thread ...

  6. asp.net mvc 4 编译错误 CS0012

    CS0012: The type 'System.Data.Objects.DataClasses.EntityObject' is defined in an assembly that is no ...

  7. [iOS微博项目 - 3.0] - 手动刷新微博

    github: https://github.com/hellovoidworld/HVWWeibo   A.下拉刷新微博 1.需求 在“首页”界面,下拉到一定距离的时候刷新微博数据 刷新数据的时候使 ...

  8. Python下调用Linux的Shell命令

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 ...

  9. JS点击任意标签获得该标签属性,以获得ID为例,以及AJAX的异步原理和 $(document).ready()与window.onload加载方法的区别

    js代码: //$(document).click(function (e) { // 在页面任意位置点击而触发此事件 // var select = ""; // var i = ...

  10. lua安装和简单使用

    1.安装 下载地址:https://www.lua.org/download.html 编译之前要安装readline,直接用yum安装 yum -y install readline-devel n ...