zoukankan      html  css  js  c++  java
  • oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息

    11g中引入了新的动态性能视图V$SQL_MONITOR,该视图用以显示Oracle监视的SQL语句信息。SQL监视会对那些并行执行或者消耗5秒以上cpu时间或I/O时间的SQL语句自动启动,同时在V$SQL_MONITOR视图中产生一条记录。当SQL语句正在执行,V$SQL_MONITOR视图中的统计信息将被实时刷新,频率为每秒1次。SQL语句执行完成后,监视信息将不会被立即删除,Oracle会保证相关记录保存一分钟(由参数_sqlmon_recycle_time所控制,默认为60s),最终这些记录都会被删除并被重用。这一新的SQL性能监视特性仅在CONTROL_MANAGEMENT_PACK_ACCESS为DIAGNOSTIC+TUNING和STATISTICS_LEVEL为ALL|TYPICAL时被启用。

    v$sql_monitor视图包含当前正在运行的SQL语句,以及最近运行的SQL语句。

    使用v$sql_monitor视图中所监控的SQL语句时需在满足以下条件:
    1) 自动监控任何并行语句
    2) 如果一个SQL语句消耗了超过5秒的CPU或I/O时间,则会自动监控
    3) 监控任何在语句级启用监控的SQL语句(使用monitor或no_monitor)

    提示:结合v$sql_monitor视图与v$sql_plan_monitor视图可以进一步查询SQL的执行计划等信息。联合一些其他视图,如v$active_session_history、v$session、v$session_longops、v$sql、v$sql_plan等,可以获得关于SQL的更多信息。

    注意:为了进行SQL监控,初始化参数STATISTICS_LEVEL必须设置为TYPICAL或ALL,CONTROL_MANAGEMENT_PACK_ACCESS必须设置为DIAGNOSTIC+TUNING。

    SQL> show parameter STATISTICS_LEVE
    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    statistics_level string TYPICAL

    SQL> show parameter CONTROL_MANAGEMENT_PACK_ACCESS
    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    control_management_pack_access string DIAGNOSTIC+TUNING

    1、 如查看数据库中消耗CPU资源排名前10位的查询:

    select * from (
    select sql_id,username,to_char(sql_exec_start,'yyyy-mm-dd hh24:mi:ss') sql_exec_start,
    sql_exec_id,sum(buffer_gets) buffer_gets,
    sum(disk_reads) disk_reads,round(sum(cpu_time/1000000),1) cpu_secs
    from v$sql_monitor
    where username not in ('SYS','SYSTEM')
    group by sql_id,username,sql_exec_start,sql_exec_id
    order by 7 desc)
    where rownum<=10;


    SQL_ID USERNAME SQL_EXEC_START SQL_EXEC_ID BUFFER_GETS DISK_READS CPU_SECS
    ------------- ------------------------------ ------------------- ----------- ----------- ---------- ----------
    8p8ann3c68vxc SCOTT 2016-11-24 09:50:20 16777216 0 0 37.1


    2、监控指定的SQL语句:
    2.1、 Hint提示监控指定的SQL语句
    select /*+ monitor */e.empno,e.ename,e.sal,d.dname from scott.emp e,scott.dept d where e.deptno=d.deptno;

    2.2、v$sql_monitor视图中查看被监控的SQL语句消耗的资源信息:

    select sql_id,username,to_char(sql_exec_start,'yyyy-mm-dd hh24:mi:ss') sql_exec_start,
    sql_exec_id,sum(buffer_gets) buffer_gets,
    sum(disk_reads)disk_reads,round(sum(cpu_time/1000000),1) cpu_secs
    from v$sql_monitor
    where sql_text like '%monitor%'
    group by sql_id,username,sql_exec_start,sql_exec_id;

    2.3、 然后可以使用DBMS_SQLTUNE包来查看SQL语句生成的监控信息(如执行计划等):
    SQL>
    set long 10000000
    set longchunksize 10000000
    set linesize 200
    select dbms_sqltune.report_sql_monitor from dual;

  • 相关阅读:
    windows自带摘要工具
    黑客帝国中的黑猫是什么?
    安装EdXposed提示请先从magisk manager中安装riru
    magisk和xposed和frida的区别
    awvs激活成功但是扫描失败 License problem 40
    KALI LINUX 工具大全之信息收集数字取证 Xplico (解释)
    小米机型代号
    黑客帝国高告诉我们的世界观认清自己
    web漏洞扫描器
    burpsuite中注入器的必知攻击方式
  • 原文地址:https://www.cnblogs.com/andy6/p/7507195.html
Copyright © 2011-2022 走看看