学习动态性能表(10)--v$session_longops

学习动态性能表sql

第十篇--V$SESSION_LONGOPS  2007.6.7session

 

本视图显示运行超过6秒的操做的状态。包括备份,恢复,统计信息收集,查询等等。app

 

要监控查询执行进展情况,你必须使用cost-based优化方式,而且:性能

  • 设置TIMED_STATISTICS或SQL_TRACE参数值为true。
  • 经过ANALYZE或DBMS_STATS数据包收集对象统计信息。

 

你能够经过DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS过程添加application-specific长运行操做信息到本视图。关于DBMS_APPLICATION_INFO.SET_SESSION_LONGOPS的更多信息能够浏览:Oracle Supplied PL/SQL Packages and Types Reference。学习

 

V$SESSION_LONGOPS列说明优化

 

  • SID:Session标识
  • SERIAL#:Session串号
  • OPNAME:操做简要说明
  • TARGET:操做运行所在的对象
  • TARGET_DESC:目标对象说明
  • SOFAR:至今为止完成的工做量
  • TOTALWORK:总工做量
  • UNITS:工做量单位
  • START_TIME:操做开始时间
  • LAST_UPDATE_TIME:统计项最后更新时间
  • TIME_REMAINING:预计完成操做的剩余时间(秒)
  • ELAPSED_SECONDS:从操做开始总花费时间(秒)
  • CONTEXT:先后关系
  • MESSAGE:统计项的完整描述
  • USERNAME:执行操做的用户ID
  • SQL_ADDRESS:用于链接查询的列
  • SQL_HASH_VALUE:用于链接查询的列
  • QCSID:

 

示例:对象

找一较大表,确认该表查询将超过6秒,哎呀让它快咱没把握,让它慢这但是个人强项啊~~ci

SQL> set timing onhash

SQL> create table ttt as select level lv,rownum rn from dual connect by level<10000000;   --建立一个临时表it

Table created

Executed in 19.5 seconds

SQL> commit;

Commit complete

Executed in 0 seconds

SQL> select * from (select * from ttt order by lv desc) where rownum<2;    --执行一个费时的查询

 

        LV         RN

---------- ----------

   9999999    9999999

Executed in 9.766 seconds   --哈哈,成功超过6秒

SQL> select sid,opname,sofar,totalwork,units,sql_hash_value from v$session_longops;      ----看看v$session_longops中是否是已经有记录了

 

       SID OPNAME                                                                SOFAR  TOTALWORK UNITS                            SQL_HASH_VALUE

---------- ---------------------------------------------------------------- ---------- ---------- -------------------------------- --------------

        10 Table Scan                                                            47276      47276 Blocks                               2583310173

Executed in 0.047 seconds

 

SQL> select a.sql_text from v$sqlarea a,v$session_longops b where a.HASH_VALUE=b.SQL_HASH_VALUE;   --经过hash_value联系查询出刚执行的查询语句。

 

SQL_TEXT

--------------------------------------------------------------------------------

 select * from (select * from ttt order by lv desc) where rownum<2

Executed in 0.063 seconds

相关文章
相关标签/搜索