使用sql monitor获取更加详细的执行计划 - dbms_sqltune.report_sql_monitor

在数据库上执行SQL语句,执行完毕或执行过程中可以通过如下语句查询到
     SQL_ID 。
select *  from  v$sql 
where  sql_text like  '%SELECT   BOOK.DESCRIPTION AS%' 
order by first_load_time  desc  ; 

(2). 在数据库上执行如下语句。
select dbms_sqltune.report_sql_monitor(type=>'TEXT', sql_id=>'4t6jwa8nrg0dp',report_level=>'ALL') monitor_report from dual;

点击查询出来的"HUGECLOB"值,可以看到TEXT格式的详细执行计划(最好保存
为txt后以ultraEdit工具打开,看得比较清晰,这里不贴出来)。一般在SQL运行
后1-3分钟内可以取到结果,SQL执行超过一定时间后查询不出执行计划(已经被删除)。


注意:不是所有的SQL都会被monitor到,如果没有看到执行计划,可以在SQL中加入
      提示 /*+monitor*/ 强制对SQL进行监控。 
------------------------------------------------------------------- 
在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分钟。查看执行计划type有
多种:
type=>'TEXT'
type=>'HTML'
type=>'ACTIVE' 
------------------------------------------------------------------- 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-777370/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-777370/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值