Dat*_*ase 7 sql oracle plsql oracle11g
我们遇到的情况是,包的编译需要永远进行!如果我们用新名称编译包,那么它就可以工作了!
据我了解,编译由于包上的锁而挂起!
像这样的事情可能有助于识别问题!
SELECT s.sid,
l.lock_type,
l.mode_held,
l.mode_requested,
l.lock_id1,
FROM dba_lock_internal l,
v$session s
WHERE s.sid = l.session_id
AND UPPER(l.lock_id1) LIKE '%PROCEDURE_NAME%'
AND l.lock_type = 'Body Definition Lock';
Run Code Online (Sandbox Code Playgroud)
还有这个
select
x.sid
from
v$session x, v$sqltext y
where
x.sql_address = y.address
and
y.sql_text like '%PROCEDURE_NAME%';
Run Code Online (Sandbox Code Playgroud)
难道只有“body Definition Lock”阻止编译吗?还有其他锁类型会阻止编译吗?
如何避免锁并进行编译?仅通过终止会话?还有别的事吗?