操作系统: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/ ,如需转载,请注明出处,否则将追究法律责任。