使用了alter table aa disable table lock 语句将表t1锁定然后 alter table aa enable table lock; 解除表锁定系统提示:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 

解决方案 »

  1.   

    SELECT * FROM v$locked_object
    where object_id=(select object_id from user_objects where object_name='AA');
      

  2.   

    检查一下是不是死锁了。 select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号 from v$locked_object l , dba_objects o , v$session s , v$process p where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;alter system kill session 'sid,serial#';--sid及serial#为第一步查出来的数据oracle 锁问题的解决
    http://blog.csdn.net/tianlesoftware/archive/2009/10/28/4733630.aspx
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716
      

  3.   

    应该是死锁问题,我自己常用的办法如下:
    1、执行语句,目的是查询得到sid 
    select   b.sql_text   text,a.sid   sid   ,a.serial#   sria#,a.username   username,   c.type   type,a.machine   machine   
      from   v$session   a   ,v$sqltext   b   ,v$access   c   
      where   c.object=upper('您的表名')   
      and   c.type   in   ('TABLE','PACKAGE','PROCEDURE','FUNCTION','PACKAGE   BODY')   
      and   a.sid=c.sid   
      and   b.address   =   a.sql_address   
      and   b.hash_value   =   a.sql_hash_value   
      order   by   a.sid,a.serial#,b.piece; 2、在企业管理器中“例程--会话”,将查询所得对应sid的会话中止,即可恢复希望帮到lz
      

  4.   


    你说反了吧,
      alter table aa disable table lock; 解除表锁定
      alter table aa enable table lock; 语句将表t1锁定
    在你锁表的时候有人正在操作这个表,资源占用因此你不能锁。 等待他人将事物结束后你就会成功了。
      

  5.   

    可能因为这个表上有未结束的事务ENABLE TABLE LOCK 
    Specify ENABLE TABLE LOCK to enable table locks, thereby allowing DDL operations on the table. All currently executing transactions must commit or roll back before Oracle Database enables the table lock.
      

  6.   

    资源正忙,表正在被使用中,未提交。查看一下是不是死锁了可以杀进程:alter system kill session 'sid,serial#';