• [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)
  • 相关阅读:
    linux 虚拟机固定Ip地址
    艰难的K8s环境准备及集群安装kuberneters
    妙啊!动画还可以这样控制?
    shell删除变量中的字符(字符串替换)
    如何在shell的循环中实现字符串的拼接
    echo输出原始字符串中连续多个空格的方法
    std:;mutex 使用
    免费素材网站合集
    从华为转正到离职
    C++实现图的遍历和最短路径
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7351689.html
Copyright © 2020-2023  润新知