当前要查看Oracle中当前正在运行的进程,我使用以下命令:
select s.sid, s.serial#
from v$session s
join v$process p on s.paddr = p.addr
该查询中是否有一种方法可以联接以使sql_query
也在每个进程中运行?
答案 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