如何检查用户/会话是否正在使用包?

时间:2017-02-03 07:08:19

标签: oracle session oracle11g oracle10g package

我有一个包ARG_AP_INVOCE_PKG已进入 INVAILD 状态。 编译后,它还没有进入VAILD状态。

所以我与我的开发人员交叉检查,发现他们中的一个正在开发它。

在这种情况下如何找到另一个用户/会话正在使用哪个包?

请提供此问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以查看V$SESSION并找到idinstance来检测阻止您的人

  

检查此link

答案 1 :(得分:0)

您可以查询v $ locked_object例如

select  /*+ RULE */
  s.sid,
  s.serial#,
  p.spid "OS SID",
  s.sql_hash_value "HASH VALUE",
  s.username "ORA USER",
  s.status,
  s.osuser "OS USER",
  s.machine,
  s.terminal,
  s.type,
  s.program,
  s.logon_time,
  s.last_call_et,
  s.sql_id,
  l.process,
  decode(L.locked_mode,1,'No Lock', 
                2,'Row Share', 
                3,'Row Exclusive', 
                4,'Share', 
                5,'Share Row Exclusive', 
                6,'Exclusive','NONE') "Lock Mode",
  o.OWNER,
  o.OBJECT_NAME,
  o.OBJECT_TYPE    
from 
  v$session s,v$locked_object l, dba_objects o, v$process p
where 
  p.addr = s.paddr and
  s.sid=l.session_id and
  l.object_id=o.object_id
order by sid

或者如果没有锁

,这将找到游标中正在访问的所有对象
select  /*+ RULE */
  s.sid,
  s.serial#,
  p.spid "OS SID",
  s.sql_hash_value "HASH VALUE",
  s.username "ORA USER",
  s.status,
  s.osuser "OS USER",
  s.machine,
  s.terminal,
  s.type,
  s.program,
  s.logon_time,
  s.sql_id,
  a.owner,
  a.object,
  a.type "OBJ TYPE"
from 
  v$session s,v$process p, v$access a
where 
  p.addr = s.paddr and
  a.sid=s.sid
order by sid