日期:2014-05-16  浏览次数:20329 次

Oracle数据库锁问题
Oracle ORA-00054报错:资源正忙,但制定以NOWAIT 方式获取资源,或者超时失效。
出现该问题,一般都是被操作的对象加了锁,资源被另一个会话锁定,发生阻塞;
先查询被锁对象的缓存id,然后通过这个缓存id取得该锁的主键sid和系列号serial#,最后通过取得的这两个参数,关掉这个锁进程。
1.查询缓存id

SQL> select session_id from v$locked_object;

SESSION_ID
----------
    25

2.获得 主键sid和系列号serial#
SQL> select sid,serial#,username,osuser from v$session where sid=14;

       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
OSUSER
------------------------------
    25     2368 root
oracle

3.关掉锁进程
SQL> alter system kill session '14,1237';

System altered.

4.重新删除POST表
SQL> drop table test;

Table dropped.
完成!