zoukankan      html  css  js  c++  java
  • [Oracle]

    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)
  • 相关阅读:
    GitHub代码阅读神器,你值有拥有!
    SpringBoot项目构建成jar运行后,如何正确读取resource下的文件
    基于SpringBoot-Dubbo的微服务快速开发框架
    基于SpringBoot的Web API快速开发基础框架
    野蛮生长的前端,从杂牌军到正规军
    让Redis突破内存大小的限制
    myeclipse 8.5-10.0 安装 svn 方法
    几秒后刷新页面
    不错的Spring学习笔记(转)
    Spring学习笔记(三)-类扫描的注解
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7351689.html
Copyright © 2011-2022 走看看