SQL> drop table lba$test;
    drop table lba$test
               *
    ERROR at line 1:
    ORA-00054: resource busy and acquire with NOWAIT specified  –某些操作被上鎖了或者其它使用者正在執行該表的相關操作!

當某個資料庫使用者在資料庫中插入、更新、刪除一個表的資料,或者增加一個表的主鍵時或者表的索引時,常常會出現ora-00054:resource busy and acquire with nowait specified這樣的錯誤。
    主要是因為有事務正在執行(或者事務已經被鎖),所有導致執行不成功。

1)用dba許可權的使用者檢視資料庫都有哪些鎖
    SQL> select t2.username, t2.sid, t2.serial#, t2.logon_time from v$locked_object t1, v$session t2
      2  where t1.session_id=t2.sid order by t2.logon_time;
    
    USERNAME                              SID    SERIAL# LOGON_TIME
    —————————— ———- ———- ———–
    SYS                                  1094          3 2011/6/20 1

2)級聯查出是哪個操作導致 根據sid檢視具體的sql語句,如果sql不重要,可以kill
    SQL> select sql_text from v$session a, v$sqltext_with_newlines b
      2  where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value) = b.hash_value and a.sid=&sid order by piece;
    
    SQL_TEXT
    —————————————————————-
    update lba$test2 set name ='sdfsdf' where id=2   –原來對這個操作枷鎖了!

– &sid = 1094;

3)kill該事務
    SQL> alter system kill session '1094, 3';    — 'SID, SERIAL#'

System altered

4)這樣就可以執行其他的事務sql語句了
    SQL> drop table lba$test;
    
    Table dropped