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

问题处理过程:

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

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调试正常。问题到此解决。

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

时间: 2024-08-30 03:56:02

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

Oracle PLSQL Demo - 12.定义包体[Define PACKAGE BODY]

CREATE OR REPLACE PACKAGE BODY temp_package_demo is FUNCTION f_demo(userid NUMBER) RETURN BOOLEAN IS v_temp varchar2(1); BEGIN SELECT 1 INTO v_temp FROM scott.emp WHERE empno = userid; RETURN TRUE; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN FALSE; END;

在IIS上发布网站后,在编译时出现CS0016拒绝访问错误

错误如下图所示: 关键性错误信息: 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\8b0443a9\fbbcc979\App_global.asax.nc86sxiq.dll”--“拒绝访问. ” 解决方法及原因: 因为IIS在编译网站时,会将编译的文件存放在系统临时文件夹里,然后将系统临时文件夹里的程序集拷贝到IIS的临时目录里,这边出

【PLSQL】package包的使用

************************************************************************   ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************ 包package package是一个可以将相关对象存储在一起的PLSQL结构,Package包含两个分量的组成部分:specif

使用Oracle的DBMS_SQL包执行动态SQL语句

使用Oracle的DBMS_SQL包执行动态SQL语句 引用自:http://blog.csdn.net/ggjjzhzz/archive/2005/10/17/507880.aspx 引用自:http://www.cnblogs.com/simonhaninmelbourne/archive/2013/01/23/2872438.html 在某些场合下,存储过程或触发器里的SQL语句需要动态生成.Oracle的DBMS_SQL包可以用来执行动态SQL语句.本文通过一个简单的例子来展示如何利用D

怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优

 怎样使用oracle 的DBMS_SQLTUNE package 来执行 Sql Tuning Advisor 进行sql 自己主动调优 1>.这里简单举个样例来说明DBMS_SQLTUNE 的使用 首先现运行下某个想要调优的sql,然后获取sqlid SQL> select * from v$sqltext where sql_text like 'select * from dual%'; ADDRESS          HASH_VALUE SQL_ID        COMMA

oracle Plsql 执行update或者delete时卡死问题解决办法

oracle Plsql 执行update或者delete时 遇到过Plsql卡死问题或者导致代码执行sql的时候就卡死. 在开发中遇到此问题的时候,本来把sql复制出来,在plsql中执行,Sql本身拼写无误,但是出现plsql卡死的情况, 在代码中,执行sql的地方打断点debug,发现执行sql,仍然没有响应.经过网上查资料,猜测导致这种情况的原因是 可能在PLSQL Developer执行update时没有commit,oracle将该条记录锁住了. 可以通过以下办法解决: 先查询锁定记

windows下用idea编写wordcount单词计数项目并打jar包上传到hadoop执行

windows下用idea编写wordcount单词计数项目并打jar包上传到hadoop执行 参考 https://blog.csdn.net/weixin_42370346/article/details/88688693 1.最后一步运行jar包时报错 原因:未指出主类名 解决方法:hadoop jar /home/wxx/WordCount.jar com.hadoop.project.WordcountMain /user/hadoop/input/file.txt /user/had

在Oracle Linux上安装dtrace

http://www.ohsdba.cn/index.php?g=Home&m=Article&a=show&id=171 时间: 2016-10-09 00:40:04  | 作者: ohsdba  | English 如非注明,本站文章皆为原创.欢迎转载,转载时请注明出处和作者信息. DTrace(dynamic tracing)是Sun Solaris系统上主要的性能诊断工具,可以对kernel和用户应用程序进行动态跟踪,并且对系统运行不构成任何危险的技术,后被Oracle公

在 Oracle Linux 上使用 DTrace

作者:Richard Friedman 简要介绍适用于 Oracle Linux 的 DTrace 探测器和提供程序,以及与 Oracle Solaris 中 DTrace 探测器和提供程序的区别.还介绍了 DTrace 命令和脚本编写. 2013 年 6 月发布 DTrace 是一个全面的动态跟踪工具,最初是为 Oracle Solaris 操作系统开发的,现在 Oracle Linux 客户也可以使用.DTrace 旨在提供运营洞察力,允许用户实时动态调整和排除操作系统和应用程序故障.DTr