请问如何提取oracle数据库中正在执行的sql,并且怎么知道哪些sql是执行比较慢的,谢谢!

解决方案 »

  1.   

    从v$session 中得到活动session 正在执行的sql 的hash_value ,然后在v$sqlarea 中获得该语句之前执行的消耗平均值( 前提是该语句已经被执行过)
    select hash_value,buffer_gets/executions,sql_text  from v$sqlarea a where  executions>0 and hash_value in ( select sql_hash_value from v$session where status='ACTIVE') order by 2 desc;或者,用如下的视图也能看到些信息,不过有时感觉这个视图的信息不够准确.
    SELECT *  FROM  v$session_longops;