通过v$sqlarea和v$sql视图查找比较耗费资源的sql
2012-07-17 11:46
417 查看
1.从v$sqlarea中找出最多的物理读的sql
2.从v$sqlarea中找出最多的逻辑读的sql
3.从v$sql中选出最占用资源的sql
4.在第3个sql中可能存在sqltext是一样的,但是是不同的子cursor的语句,那么可以查询v$sql_shared_cursor来查询为什么同一个sqltext的sql会有不同的执行计划
select b.username, a.DISK_READS, a.EXECUTIONS, a.DISK_READS / decode(a.EXECUTIONS, 0, 1, a.EXECUTIONS) ratio, a.SQL_TEXT from v$sqlarea a, dba_users b where a.PARSING_USER_ID = b.user_id and a.DISK_READS > 10000 and b.username not in ('SYS', 'SYSTEM') order by a.DISK_READS desc;
2.从v$sqlarea中找出最多的逻辑读的sql
select b.username, a.BUFFER_GETS, a.EXECUTIONS, a.BUFFER_GETS / decode(a.EXECUTIONS, 0, 1, a.EXECUTIONS) ratio, a.SQL_TEXT from v$sqlarea a, dba_users b where a.PARSING_USER_ID = b.user_id and a.BUFFER_GETS > 10000 and b.username not in ('SYS', 'SYSTEM') order by a.DISK_READS desc;
3.从v$sql中选出最占用资源的sql
select * from (select a.ADDRESS, a.SQL_TEXT, rank() over(order by a.BUFFER_GETS desc) as rank_bufgets, to_char(100 * ratio_to_report(a.BUFFER_GETS) over(), '999.99') as pct_bufgets from v$sql a where a.PARSING_SCHEMA_NAME = 'PMIS') where rank_bufgets < 11
4.在第3个sql中可能存在sqltext是一样的,但是是不同的子cursor的语句,那么可以查询v$sql_shared_cursor来查询为什么同一个sqltext的sql会有不同的执行计划
select * from v$sql_shared_cursor c where c.ADDRESS='&address'
相关文章推荐
- 通过v$sqlarea,v$sql查询最占用资源的查询
- 通过v$sqlarea,v$sql查询最占用资源的查询 ORACLE性能
- 通过v$sqlarea,v$sql查询最占用资源的查询
- 通过v$sqlarea,v$sql查询最占用资源的查询
- 通过v$sqlarea,v$sql查询最占用资源的查询
- 通过v$sqlarea,v$sql查询最占用资源的查询
- 转通过v$sqlarea,v$sql查询最占用资源的查询
- 通过v$sqlarea,v$sql查询最占用资源的查询
- v$sql视图和v$sqlarea视图的构建
- Sql Server中通过父记录查找出所有关联的子记录(可查4级Sql代码)
- oracle 在windows系统中通过spid查找执行的sql
- v$sqlarea,v$sql,v$sqltext的区别
- v$sql和v$sqlarea视图的区别
- 在mssql中通过sql查找在某段时间修改的的表、视图和存储过程
- 学习v$sql,v$sqlarea,v$sqltext,v$sqlstats和v$sql_plan
- v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句有什么区别?
- 通过SQL比较两张表的异同
- v$sqlarea,v$sql,v$sqltext这三个视图提供的sql语句的区别
- 研究v$sqlarea,V$SQL,V$SQLTEXT
- 如何通过SQL查找到某个table的PK对应的几个字段 ?