ORA-00054: resource busy and acquire with NOWAIT specified

来源:这里教程网 时间:2026-03-03 14:02:26 作者:

操作系统:AIX 6.1 数据库版本:11.2.0.4.170117 原因:OGG目的端相关表字段添加完毕,源端添加报错ORA-00054: resource busy and acquire with NOWAIT specified  因申请变更时间将至 所以反馈到我处 验证现象: 一、检查数据是否有锁 检查结果为空,没有死锁对象 二、检查是否有对象被锁且未提交 单实例: RAC: 二、根据sid查看具体的sql语句,如果sql不重要,可以kill select sql_text   from v$session a, v$sqltext_with_newlines b  where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value) =b.hash_value    and a.sid = &sid  order by piece; 三、kill该事务 alter system kill session 'SID,SERIAL#'; 结果有两个会话,因为时间关系,未检查是何SQL导致,直接KILL  SQL> alter system kill session '952,57243'; System altered. SQL> alter system kill session '6301,8029'; System altered. ####ORA-00031: session marked for kill 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。 现在提供一种方法如下: 提供如下SQL 可以 OS级别KILL select '!kill -9 '||p.spid||'' from v$process p,v$session s where p.addr=s.paddr  and sid=&sid; 四、这样就可以执行其他的事务sql语句了 再次执行添加字段: SQL>  alter table newbcexplore.item add MIN_ORDER_QTY FLOAT; Table altered. 完毕! 总结: 当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。 主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。

相关推荐