在Oracle中的活动进程中获取sid,SQL查询

时间:2019-01-04 07:14:08

标签: sql oracle plsql

当前要查看Oracle中当前正在运行的进程,我使用以下命令:

select s.sid, s.serial# 
from v$session s 
join v$process p on s.paddr = p.addr

该查询中是否有一种方法可以联接以使sql_query也在每个进程中运行?

1 个答案:

答案 0 :(得分:1)

当然可以使用v$active_session_history(从11g开始),它为您提供了有关为该流程运行的查询的大量信息。

以下查询将为您提供数据库上正在执行的最后一次执行的查询(使用sql_exec_start上的desc命令)。我在选择中指定的列可以为您提供帮助。顺便说一下,top_level_sql_id很有用,以防您的查询被某个过程运行,那么您将知道哪个过程正在执行它。

selecT ar.sql_text,
       ash.session_id,
       ash.SESSION_SERIAL#,
       ash.sql_id,
       ash.top_level_sql_id,
       ash.sql_plan_operation,
       ash.sql_exec_start,
       ash.event,
       ash.blocking_session,
       ash.program,
       ash.module,
       ash.machine
  from v$active_session_history ash
inner join v$sqlarea ar on ar.sql_id=ash.sql_id
order by sql_exec_start desc