编译同一个存储过程,或者执行此存储过程时非常慢,最后报错:ORA-04021: 等待锁定对象 SBJC.PRO_JC_ENTRANCE 时发生超时。
网上查了一下。一般ORA-04021是因为这个包正在被其他会话调用,编译时申请不到library lock导致的,通过dba_ddl_lock 找到调用这个包的会话kill之后据能够正常编译,按照这个方法问题得到解决。
select * from dba_ddl_locks where name='PRO_JC_ENTRANCE'
150
select sid,serial# from v$session where sid=150;
150 7513
alter system kill session '150, 7513';
问题解决。
本文介绍了一种解决Oracle数据库中编译存储过程缓慢并出现ORA-04021错误的技术解决方案。通过使用dba_ddl_locks查询找到冲突会话,利用alter system kill session命令释放锁,从而恢复正常编译流程。
3467

被折叠的 条评论
为什么被折叠?



