【问题标题】:How do I get Oracle, see what procedures are running?我如何获取Oracle,查看正在运行的程序是什么?
【发布时间】:2013-08-04 04:13:43
【问题描述】:

下午好。如何获取 Oracle,查看正在运行的程序?

【问题讨论】:

标签: oracle procedures


【解决方案1】:

根据您的需要,这可能就足够了(但依赖于对 v$session 和 dba_objects 的访问):

select 'CALLED PLSQL', vs.username, d_o.object_name -- whatever info you need
  from dba_objects d_o
       inner join
       v$session vs
          on d_o.object_id = vs.plsql_entry_object_id
union all
select 'CURRENT PLSQL', vs.username, d_o.object_name
  from dba_objects d_o
       inner join
       v$session vs
          on d_o.object_id = vs.plsql_object_id

根据文档:

PLSQL_ENTRY_OBJECT_ID - 堆栈上最顶层 PL/SQL 子程序的 ID;如果堆栈上没有 PL/SQL 子程序,则为 NULL

PLSQL_OBJECT_ID - 当前执行的 PL/SQL 子程序的对象 ID;如果执行 SQL,则为 NULL

【讨论】:

  • 谢谢。这正是我所需要的。现在已经借此机会询问您是否知道告诉我是否可以查看特定过程正在运行的查询!?
  • 您可以添加 v$sql 以在您检查时获取当前正在运行的 SQL: LEFT OUTER JOIN v$sql vsq ON vsq.sql_id = vs.sql_id 并将 vsq.sql_fulltext 添加到 SELECT列表。哦,你可能想包括 WHERE vs.status = 'ACTIVE'。
  • 我已经按照你说的做了,它显示了我想要的但是生成值的位置出现了 B3:,:B2。不能显示实际值吗?
  • 恐怕我不明白您所说的“生成值”与“实际值”是什么意思
  • 在 SGL_FULLTEXT tabeka v $ sql 的字段中,显示查询正在执行。但是,在该查询中,例如 id_number:1234 没有出现,而是出现 id_number =: B2。我的问题是是否可以看到 :B2 对应的值。
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多