oracle - 如何找到导致 ORA-00054 的原因?

标签 oracle oracle11g ora-00054

过去一段时间,我注意到在大量并发更新期间,尝试发出 SELECT ... FOR UPDATE NOWAIT 时出现 ORA-00054 错误数据库。这是我们的开发系统,我们确实没有任何其他用户,或者至少我们是这么认为的。

我们已经查看了应用程序的日志,看起来一切正常;没有线程尝试更新同一行。

如何配置 Oracle 数据库来生成日志,以便让我知道发生此错误时持有锁的用户 ID?

最佳答案

从这里:ORA-00054: resource busy and acquire with NOWAIT specified

您还可以查找sql​​、用户名、机器、端口信息并获取持有连接的实际进程

SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT 
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, 
V$PROCESS P, V$SQL SQ 
WHERE L.OBJECT_ID = O.OBJECT_ID 
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR 
AND S.SQL_ADDRESS = SQ.ADDRESS;

关于oracle - 如何找到导致 ORA-00054 的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10378651/

相关文章:

sql - 为什么 Oracle 9i 将空字符串视为 NULL?

mysql - 当我们使用嵌套查询 for max(cgpa) 时,我们可以使用 select * 吗

database - 如何只授予 Oracle 11g 中的用户本地登录访问权限?

sql - 你如何检查一行是否被锁定以进行更新?

sql - ORA-00054 删除表时资源繁忙

oracle - 一种在 PL/SQL 中将按表索引转换为简单表的优雅方法,然后循环遍历每个条目

java - JPA中的并发问题

oracle - SQLDeveloper 使用超过 100MB 的 PGA

oracle - 向 Oracle OLTP 表添加列

asp.net - ASP.NET 应用程序的日志框架