|
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 |
