zoukankan      html  css  js  c++  java
  • 监视oracle执行的SQL语句

    查询v$sql

    select * from v$sql t
    where t.LAST_ACTIVE_TIME>(sysdate - interval '1' MINUTE)  --执行1分钟内的SQL语句
          and t.PARSING_SCHEMA_NAME = 'LSBIKE' --数据库
          and (t.MODULE is null or t.MODULE not like '%PL/SQL%') --不是在某些终端里的执行
          and lower(t.SQL_TEXT) like '%select%' --查询某类SQL语句
    order by t.LAST_ACTIVE_TIME desc

    查询匹配的参数,会造成每个语句多行:

    select t.*,
           b.name,b.position,b.dup_position,
           b.value_string
    from v$sql t, v$sql_bind_capture b
    where 
         t.hash_value=b.hash_value
         and t.LAST_ACTIVE_TIME>(sysdate - interval '1' MINUTE)  --执行1分钟内的SQL语句  
         and t.PARSING_SCHEMA_NAME = 'LSBIKE' --数据库  
         and (t.MODULE = 'JDBC Thin Client') --不是在某些终端里的执行  
         and lower(t.SQL_TEXT) like '%select%' --查询某类SQL语句  
    order by t.LAST_ACTIVE_TIME desc 

    Oracle11g使用sql_monitor实时监控sql

    在 Oracle  Database  11g 中,v$session 视图增加了一些新的字段,这其中包括SQL_EXEC_START 和 SQL_EXEC_ID
    这两个字段实际上代表了 Oracle 11g 的一个新特性:实时的 SQL 监视(Real Time SQL Monitoring)。
    在 Oracle 11g 之前的版本,长时间运行的 SQL 可以通过监控 v$session_longops 
    当某个操作执行时间超过 6 秒,就会被记录在 v$session_longops 中,通常可以监控到全表扫
    描、全索引扫描、哈希联接、并行查询等操作;而在 Oracle  11g 中,当 SQL 并行执行时,会
    立即被实时监控到,或者当 SQL 单进程运行时,如果消耗超过 5 秒的 CPU 或 I/O 时间,它也
    会被监控到。监控数据被记录在 V$SQL_MONITOR 视图中,当然也可以通过 Oracle 11g 新增
    的 package DBMS_MONITOR 来主动对 SQL 执行监控部署。

     V$SQL_MONITOR 收集的信息每秒刷新一次,接近实时,当 SQL 执行完毕,信息并不会
    立即从 v$sql_monitor 中删除,至少会保留 1 分钟,v$sql_plan_monitor 视图中的执行计划信息
    也是每秒更新一次,当 SQL 执行完结,它们同样至少被保留 1 分钟。
    实时 SQL 监控需要 statistics_level 初始化参数设置为 TYPICAL 或 ALL

    select * from v$sql_monito t
    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    安装lamp lnmp 一键安装包网址
    mysql float 这个大坑
    今天 运营同事发现的bug记录 上传商品时商品名称带双引号 导致输出页面时 双引号被转义
    excel 导出长数据 变成科学计数 解决办法
    mysql 基本知识 以及优化
    刷算法题记录
    windows 安装svn 要点(非安装步骤)
    《UCD火花集1-2》读后感
    我所经历的的一次问卷调查
    怎样进行批判性的思考
  • 原文地址:https://www.cnblogs.com/jijm123/p/13396285.html
Copyright © 2011-2022 走看看