我如何获取Oracle,查看正在运行的程序是啥?

Posted

技术标签:

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

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

【问题讨论】:

请查看***.com/questions/250792/… 【参考方案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 对应的值。

以上是关于我如何获取Oracle,查看正在运行的程序是啥?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 如何结束正在运行的语句

如何查看linux 正在运行的进程

如何在 Oracle SQL 开发人员中查看/执行授予的存储过程

oracle数据库中sid是啥意思?

如何使用 PowerShell 或 VBScript 获取正在运行的应用程序列表

oracle如何查询和停止正在运行的job?