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 228 574 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 '228,574';
重建索引的时候报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 228 574 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 '228,574';
编辑回复