ITPub博客

首页 > 数据库 > Oracle > ORA-00054: resource busy and acquire with NOWAIT specified

ORA-00054: resource busy and acquire with NOWAIT specified

原创 Oracle 作者:dmcatding 时间:2019-08-02 13:59:40 0 删除 编辑

操作系统: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这样的错误。

主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30327022/viewspace-2652580/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: OGG-01423
请登录后发表评论 登录
全部评论
此BLOG仅作为个人笔记记录,如有误肯请各位指正,谢谢!

注册时间:2015-07-04

  • 博文量
    91
  • 访问量
    190131