ORA-00054

 一、

ORA-00054

      重建索引的时候报ORA-00054错误,此错误在Oracle 10G Error Messages是如下描述的:
      ORA-00054:resource busy and acquire with NOWAIT specified
      Cause:Resource interested is busy.
      Action:Retry if necessary. 
      此错误发生在resource被锁了,同时又发出一个NOWAIT的命令。例如在update一个表的同时对他重建索引。解决方法,等待resource的锁释放以后再试。释放的方法可以通过等待事务完成自动释放,也可以强制结束session的方法释放。具体方法根据实际需要来决定,下面是强制结束session的方法释放此resource的锁:

      1.查看数据库中那些用户产生了锁
SQL> select username,sid,serial#,logon_time from v$locked_object,v$session where v$locked_object.session_id=v$session.sid;
USERNAME                              SID    SERIAL# LOGON_TIME
------------------------------ ---------- ---------- -----------
NEWCCS                               1491      11152 2010-7-6 17

      2.根据SID查看具体的SQL语句
SQL> select sql_text from v$session,v$sqltext_with_newlines where decode(v$session.sql_hash_value,0,prev_hash_value,sql_hash_value)=v$sqltext_with_newlines.hash_value and v$session.sid=&sid order by piece;
      3.如果短时间内此SQL语句无法完成,且急需重建索引,那么kill此session
SQL> alter system kill session '1491,11152';



二、

ora-00054:resource busy and acquire with nowait specified解决方法

(2011-05-22 09:47:29)
标签: 

杂谈

分类: oracle学习笔记

当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。

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

1、用dba权限的用户查看数据库都有哪些锁

select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;

如:testuser 339 13545 2009-3-5 17:40:05
知道被锁的用户testuser,sid为339,serial#为13545

2、根据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;

查出来的sql,如: begin :id := sys.dbms_transaction.local_transaction_id; end;

3、kill该事务
alter system kill session '339,13545';

4、这样就可以执行其他的事务sql语句了

如增加表的主键:
alter table test
  add constraint PK_test primary key (test_NO);

ORA-00054Oracle数据库中的一个常见错误,表示用户试图在正在被锁定的资源上执行不允许的操作,导致资源处于忙碌状态。 这种情况通常发生在多个会话(用户)同时尝试访问同一资源时。为了解决ORA-00054错误,可以尝试杀死占用该资源的会话,通过使用KILL SESSION命令或者在Oracle Enterprise Manager中手动终止会话。 但需要注意的是,杀死会话只是解决ORA-00054错误的一种方法,而不是根本解决问题的方法。如果ORA-00054错误经常发生,可能需要重新设计应用程序或进行其他调整,以避免多个会话同时访问同一资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[ORACLE] ORA-00054 错误的解决方案](https://blog.csdn.net/jaykiller/article/details/107400461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [oracle ORA-00054 资源正忙](https://blog.csdn.net/weixin_42064877/article/details/130611156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值