Oracle之查看最近最消耗CPU的SQL语句及会话信息的方法
2017-07-09 23:07
656 查看
导读:
1、查找最近一分钟内,最消耗CPU的SQL语句;
2、查找最近一分钟内,最消耗CPU的会话;
3、查找最近一分钟内,最消耗I/O的SQL语句;
4、查找最近一分钟内,最消耗资源的SQL语句;
5、查找最近一分钟内,最消耗资源的会话。
在Oracle中,查找最近一段时间,最消耗CPU的SQL语句及会话信息:
可以根据 V$ACTIVE_SESSION_HISTORY 视图来获取。
1、查找最近一分钟内,最消耗CPU的SQL语句:
2、查找最近一分钟内,最消耗CPU的会话:
SELECT SESSION_ID,
COUNT(*)
FROM V$ACTIVE_SESSION_HISTORY V
WHERE V.SESSION_STATE = 'ON CPU'
AND V.SAMPLE_TIME > SYSDATE - 10/ (24 * 60)
GROUP BY SESSION_ID
ORDER BY COUNT(*) DESC;
3、查找最近一分钟内,最消耗I/O的SQL语句:
4、查找最近一分钟内,最消耗资源的SQL语句:
5、查找最近一分钟内,最消耗资源的会话:
1、查找最近一分钟内,最消耗CPU的SQL语句;
2、查找最近一分钟内,最消耗CPU的会话;
3、查找最近一分钟内,最消耗I/O的SQL语句;
4、查找最近一分钟内,最消耗资源的SQL语句;
5、查找最近一分钟内,最消耗资源的会话。
在Oracle中,查找最近一段时间,最消耗CPU的SQL语句及会话信息:
可以根据 V$ACTIVE_SESSION_HISTORY 视图来获取。
1、查找最近一分钟内,最消耗CPU的SQL语句:
SELECT ASH.INST_ID, ASH.SQL_ID, (SELECT VS.SQL_TEXT FROM GV$SQLAREA VS WHERE VS.SQL_ID = ASH.SQL_ID AND ASH.INST_ID = VS.INST_ID) SQL_TEXT, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, ASH.SESSION_INFO, COUNTS, PCTLOAD * 100 || '%' PCTLOAD FROM (SELECT ASH.INST_ID, ASH.SQL_ID, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, (ASH.MODULE || '--' || ASH.ACTION || '--' || ASH.PROGRAM || '--' || ASH.MACHINE || '--' || ASH.CLIENT_ID || '--' || ASH.SESSION_TYPE) SESSION_INFO, COUNT(*) COUNTS, ROUND(COUNT(*) / SUM(COUNT(*)) OVER(), 2) PCTLOAD, DENSE_RANK() OVER(ORDER BY COUNT(*) DESC) RANK_ORDER FROM GV$ACTIVE_SESSION_HISTORY ASH WHERE ASH.SESSION_TYPE <> 'BACKGROUND' AND ASH.SESSION_STATE = 'ON CPU' AND SAMPLE_TIME > SYSDATE - 1 / (24 * 60) GROUP BY ASH.INST_ID, ASH.SQL_ID, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, (ASH.MODULE || '--' || ASH.ACTION || '--' || ASH.PROGRAM || '--' || ASH.MACHINE || '--' || ASH.CLIENT_ID || '--' || ASH.SESSION_TYPE)) ASH WHERE RANK_ORDER <= 10 ORDER BY COUNTS DESC;
2、查找最近一分钟内,最消耗CPU的会话:
SELECT SESSION_ID,
COUNT(*)
FROM V$ACTIVE_SESSION_HISTORY V
WHERE V.SESSION_STATE = 'ON CPU'
AND V.SAMPLE_TIME > SYSDATE - 10/ (24 * 60)
GROUP BY SESSION_ID
ORDER BY COUNT(*) DESC;
3、查找最近一分钟内,最消耗I/O的SQL语句:
SELECT ASH.INST_ID, ASH.SQL_ID, (SELECT VS.SQL_TEXT FROM GV$SQLAREA VS WHERE VS.SQL_ID = ASH.SQL_ID AND ASH.INST_ID = VS.INST_ID) SQL_TEXT, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, ASH.SESSION_INFO, COUNTS, PCTLOAD * 100 || '%' PCTLOAD FROM (SELECT ASH.INST_ID, ASH.SQL_ID, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, (ASH.MODULE || '--' || ASH.ACTION || '--' || ASH.PROGRAM || '--' || ASH.MACHINE || '--' || ASH.CLIENT_ID || '--' || ASH.SESSION_TYPE) SESSION_INFO, COUNT(*) COUNTS, ROUND(COUNT(*) / SUM(COUNT(*)) OVER(), 2) PCTLOAD, DENSE_RANK() OVER(ORDER BY COUNT(*) DESC) RANK_ORDER FROM GV$ACTIVE_SESSION_HISTORY ASH WHERE ASH.SESSION_TYPE <> 'BACKGROUND' AND ASH.SESSION_STATE = 'WAITING' AND ASH.SAMPLE_TIME > SYSDATE - 1 / (24 * 60) AND ASH.WAIT_CLASS = 'USER I/O' GROUP BY ASH.INST_ID, ASH.SQL_ID, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, (ASH.MODULE || '--' || ASH.ACTION || '--' || ASH.PROGRAM || '--' || ASH.MACHINE || '--' || ASH.CLIENT_ID || '--' || ASH.SESSION_TYPE)) ASH WHERE RANK_ORDER <= 10 ORDER BY COUNTS DESC;
4、查找最近一分钟内,最消耗资源的SQL语句:
SELECT ASH.INST_ID, ASH.SQL_ID, (SELECT VS.SQL_TEXT FROM GV$SQLAREA VS WHERE VS.SQL_ID = ASH.SQL_ID AND ASH.INST_ID = VS.INST_ID) SQL_TEXT, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, ASH.SESSION_INFO, COUNTS, PCTLOAD * 100 || '%' PCTLOAD FROM (SELECT ASH.INST_ID, ASH.SQL_ID, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, (ASH.MODULE || '--' || ASH.ACTION || '--' || ASH.PROGRAM || '--' || ASH.MACHINE || '--' || ASH.CLIENT_ID || '--' || ASH.SESSION_TYPE) SESSION_INFO, COUNT(*) COUNTS, ROUND(COUNT(*) / SUM(COUNT(*)) OVER(), 2) PCTLOAD, DENSE_RANK() OVER(ORDER BY COUNT(*) DESC) RANK_ORDER FROM GV$ACTIVE_SESSION_HISTORY ASH WHERE ASH.SESSION_TYPE <> 'BACKGROUND' AND ASH.SESSION_STATE = 'WAITING' AND ASH.SAMPLE_TIME > SYSDATE - 1 / (24 * 60) AND ASH.WAIT_CLASS = 'USER I/O' GROUP BY ASH.INST_ID, ASH.SQL_ID, ASH.SQL_CHILD_NUMBER, ASH.SQL_OPNAME, (ASH.MODULE || '--' || ASH.ACTION || '--' || ASH.PROGRAM || '--' || ASH.MACHINE || '--' || ASH.CLIENT_ID || '--' || ASH.SESSION_TYPE)) ASH WHERE RANK_ORDER <= 10 ORDER BY COUNTS DESC;
5、查找最近一分钟内,最消耗资源的会话:
SELECT ASH.SESSION_ID, ASH.SESSION_SERIAL#, ASH.USER_ID, ASH.PROGRAM, SUM(DECODE(ASH.SESSION_STATE, 'ON CPU', 1, 0)) "CPU", SUM(DECODE(ASH.SESSION_STATE, 'WAITING', 1, 0)) - SUM(DECODE(ASH.SESSION_STATE, 'WAITING', DECODE(ASH.WAIT_CLASS, 'USER I/O', 1, 0), 0)) "WAITING", SUM(DECODE(ASH.SESSION_STATE, 'WAITING', DECODE(ASH.WAIT_CLASS, 'USER I/O', 1, 0), 0)) "IO", SUM(DECODE(ASH.SESSION_STATE, 'ON CPU', 1, 1)) "TOTAL" FROM V$ACTIVE_SESSION_HISTORY ASH WHERE ASH.SAMPLE_TIME > SYSDATE - 1 / (24 * 60) GROUP BY ASH.SESSION_ID, ASH.USER_ID, ASH.SESSION_SERIAL#, ASH.PROGRAM ORDER BY SUM(DECODE(ASH.SESSION_STATE, 'ON CPU', 1, 1));
相关文章推荐
- 查看前五个最占用CPU的Oracle会话进程.以及他们正在执行的sql语句
- 查看Oracle执行计划的几种方法 / oracle中DateTime类型的字段,建立索引后,查寻时索引如何生效?/ oracle 中sql语句怎么加多个强制索引
- SQL语句查看oracle版本信息
- Oracle之通过SQL语句查看表信息-yellowcong
- 使用Oracle自带的系统包和过程监控其它会话SQL语句的执行计划等信息
- oracle查看创建表的sql语句1,DESCRIBE命令使用方法如下:SQL>descri
- Oracle 查看当前会话所执行的语句以及会话相关信息
- 查看django执行的sql语句及消耗时间的两种方法
- Oracle 查看表空间的大小及使用情况sql语句和oracle增加表空间大小两种实现方法
- Oracle中捕获问题SQL解决CPU过渡消耗
- oracle 下 创建数据库和用户界面操作 和sql 语句 下的创建方法
- 查找oracle数据库系统里的bad sql语句的方法
- 一个查看MSSQL数据库中所有表信息的SQL语句
- Oracle诊断案例----如何捕获问题SQL解决过度CPU消耗问题
- 一个查看MSSQL数据库中所有表信息的SQL语句
- 如何在sqlplus中查看oracle数据库sql语句执行计划,执行时间和统计信息
- 获取数据库系统信息的SQL语句(Mysql,Oracle)
- [置顶]一个查看MSSQL数据库中所有表信息的SQL语句