共计 1310 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要讲解了“怎么使用 sql monitor 获取更加详细的执行计划”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么使用 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
——————————————————————-
感谢各位的阅读,以上就是“怎么使用 sql monitor 获取更加详细的执行计划”的内容了,经过本文的学习后,相信大家对怎么使用 sql monitor 获取更加详细的执行计划这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!