解决ORA-00054资源正忙的问题

有时候在drop表或者其他对象的时候,会遇到ORA-00054:资源正忙,要求指定NOWAIT(中文字符集)或者ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired错误(英文字符集),Oracle官方解决方案:

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

Cause: Interested resource is busy.

Action: Retry if necessary or increase timeout.

通常处理方法有好几个步骤:

  • 查看数据库中那些用户产生了锁
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
  • 根据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;
  • 如果短时间内此SQL语句无法完成,且急需重建索引,那么kill此session
SQL> alter system kill session ‘228,574‘;

以上步骤太过繁琐,这里有一段代码的解决方案:

BEGIN
FOR C IN (SELECT S.SID SID, S.SERIAL# SERIAL FROM V$LOCKED_OBJECT L, V$SESSION S WHERE L.SESSION_ID = S.SID) LOOP
   EXECUTE IMMEDIATE (‘ALTER SYSTEM KILL SESSION ‘‘‘ || C.SID || ‘,‘ || C.SERIAL || ‘‘‘‘);
END LOOP;
END;

原文地址:https://www.cnblogs.com/eos666/p/10575685.html

时间: 2024-11-09 03:11:48

解决ORA-00054资源正忙的问题的相关文章

Oracle报 ORA-00054资源正忙的解决办法

来源于:http://www.cnblogs.com/loveLearning/p/3625544.html oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT 问题如下: SQL> conn scott/[email protected]_databaseConnected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0Connected as scott ...... SQL> drop ta

oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT

SQL> conn scott/[email protected]_databaseConnected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0Connected as scott ...... SQL> drop table student2;drop table student2ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效========================

一些细节问题的处理。oracle“ora00054:资源正忙”错误。post传值乱码等。

处理oracle表锁死,资源正忙问题,杀掉进程即可. 一.处理步骤: --1.获取被锁对象的session_id SELECT session_id FROM v$locked_object; --2.通过session_id获取v$session的sid和serial# SELECT sid, serial#, username, osuser FROM v$session where sid = session_id; --3.终止相关进程. ALTER SYSTEM KILL SESSIO

ORACLE操作表时”资源正忙,需指定nowait"的解锁方法

ORACLE操作表时”资源正忙,需指定nowait"的解锁方法 问题: 执行 drop table table_name 时,提示”资源正忙,需指定nowait"      由于TB_PROJECT为设置主键造成只能查询而无法修改和删除的问题导致PL/SQL无响应,从而对此表一直处于锁定状态 分析: 表示table_name表由某个用户操作时进行了锁定,必须先解锁才能继续进行操作 解决: 1> 通过此语句查询正在锁定的SESSION_ID: SELECT  SESSION_ID 

【转】oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT

问题如下: SQL> conn scott/[email protected]_databaseConnected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0Connected as scott ...... SQL> drop table student2; drop table student2 ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效================

ORA-00054:资源正忙,要求指定NOWAIT

--ORA-00054:资源正忙,要求指定NOWAIT-- --以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句-- SELECT sid, serial#, username, osuser FROM v$session WHERE sid IN(SELECT session_id FROM v$locked_object); --杀掉锁-- ALTER SYSTEM KILL SESSION 'sid,serial#'; ALTER SYSTEM KILL SESSION '15

Oracle中修改表名遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”

Oracle中想修改表名: rename ASSETPORJECT to ASSETPROJECT; --结果提示:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效. 看来有锁定该表的会话,于是,执行如下查询: SELECT sid, serial#, username, osuser FROM v$session where sid in(select session_id from v$locked_object); --kill掉相关的会话 ALTER

ORA-00054 资源正忙,要求指定

ora-00054:resource busy and acquire with nowait specified解决方法 当某个数据库用户在数据库中插入.更新.删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误. 主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功. 1.用dba权限的用户查看数据库都有哪些锁 select t2.userna

使用plsql修改数据,报ORA-00054:资源正忙,但指定以NOWAIT方式获取资源,或者超时失效

java小菜鸟一枚,记得面试官曾经问过我一个问题,就是你使用sql语句,除了写过增删改查,还写过什么别的命令没有,当时真的想不起来了,所以我打算记录一下,面试之前看一看,有备无患. 之前一直用的mysql,没怎么使用过oracle,这次公司的项目使用的oracle,觉得还是mysql方便啊,哈哈哈哈 之前就报过这个问题,现在查了一下解决办法,大概就是这样的 1 .等待其他资源回话释放,在创建语句中添加online,回话释放资源后,该语句会自动执行.这种方式是采用堵塞方式,不报错. 这个不适合我的