如何在Oracle中显示SQL执行进度和执行计划?

问题:

您想查看Oracle SQL在SQL执行计划中花费时间的位置。

使用Oracle 11g版本,我们可以在SQL运行时查看SQL执行计划的进度。“ V $SQL_PLAN_MONITOR”视图为SQL语句的执行计划的每个步骤包含一行。SQL下面将帮助您查看执行计划以及进度。

“ V $SQL_PLAN_MONITOR”为您提供有关使用资源最多的步骤的信息,“ V $SQL_PLAN_MONITOR”中的统计信息每秒更新一次。

通过使用DBMS_SQLTUNE包的REPORT_SQL_MONITOR函数,我们还可以在执行计划内生成查询进度的实时文本,HTML甚至XML报告。

示例

select

  a.sid

 ,a.status

 ,to_char(a.sql_exec_start,'yymmdd hh24:mi') start_time

 ,a.plan_line_id

 ,a.plan_operation

 ,a.plan_options

 ,a.output_rows

 ,a.workarea_mem     mem_bytes

 ,a.workarea_tempseg temp_bytes

from v$sql_plan_monitor a

    ,v$sql_monitor      b

where a.status NOT LIKE '%DONE%'

and   a.key = b.key

order by a.sid, a.sql_exec_start, a.plan_line_id;

生成HTML报告。

示例

SET LINES 3000 PAGES 0 LONG 1000000 TRIMSPOOL ON

SPOOL report.html

select dbms_sqltune.report_sql_monitor(session_id=> 901,

  event_detail => 'YES' ,report_level => 'ALL' ,type => 'HTML'

  )

from dual;

SPOOL OFF;

以上是 如何在Oracle中显示SQL执行进度和执行计划? 的全部内容, 来源链接: utcz.com/z/340741.html

回到顶部