码迷,mamicode.com
首页 > 数据库 > 详细

oracle plsql 上对package 包执行重新编译时,超时无响应:(4021)time-out occurred while waiting to lock object

时间:2019-07-16 18:39:49      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:div   bsp   red   code   自动   debug   access   exec   span   

问题处理过程:

开发反应包存在问题, 我一看他们的用户没对应的权限,给赋予了以下权限:

GRANT debug any procedure, debug connect session TO CMSOPR;
GRANT EXECUTE any procedure TO CMSOPR; 

开发进行调试后没执行结果。

于是我想重新编译,先重新编译的包,半天报个响应超时,当时也没想太多,以为有死锁,于是查数据库锁 -没锁。

查数据库审计表:

select * from dba_audit_trail where timestamp>to_date(‘2019/7/16 00:00:00‘,‘yyyy/mm/dd hh24:mi:ss‘) and obj_name=‘CMSVOUCHER‘;  

根据查询结果发现:某开发在我赋权之后对包进行了重编译,且没有成功(没有编译权限)-error:3135。咨询得知:该开发在编译时plsql未反应便强制关掉了plsql。

技术图片

同时查出了我编译后操作的返回错误号为error:4021 time-out occurred while waiting to lock object

结合知识点:

(1)存储过程编译没完成,或者编译失败时,oracle 数据库会自动把相应的存储过程锁起来;

(2)DBA_DDL_LOCKS视图中记录存储过程、表结构、视图、包等数据库对象锁的信息;

(3)V$ACCESS视图显示数据库中当前锁定的对象及访问它们的会话 。

查询锁定(运行中的)的包对应的SID号:
SELECT * FROM V$ACCESS WHERE OBJECT=CMSVOUCHER;
select * from dba_ddl_locks where name=CMSVOUCHER;
根据SID号查出会话信息:
select sid,serial# from v$session where sid in(78,209);
kill掉:
alter system kill session 78,4883;
alter system kill session 209,57021;

重新编译了包和包体--编译成功,包debug调试正常。问题到此解决。

oracle plsql 上对package 包执行重新编译时,超时无响应:(4021)time-out occurred while waiting to lock object

标签:div   bsp   red   code   自动   debug   access   exec   span   

原文地址:https://www.cnblogs.com/wsn-only/p/11196444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!