oracle 强制解锁

来源:互联网 发布:怎么关闭淘宝店 编辑:程序博客网 时间:2024/04/29 02:10

问题描述:
当执行:delete  from table1 时,由于数据大速度很慢,想停止。这个时候如果强制执行:truncate table table1,
会出现错误提示:
[1]: (Error): ORA-00054: resource busy and acquire with NOWAIT specified

解决方法:
1,如果不着急的话,就等待,过一段时间,会自动解锁
2,kill the session :

----查找某用户下的所有锁
select a.*,b.object_name 
from v$locked_object a ,all_objects b ,v$session c
where a.OBJECT_ID=b.object_id
AND a.SESSION_ID=c.SID
and c.USERNAME='abc'




例:
SQL> select username,status,sid,serial# from v$session where username is not null;

USERNAME                       STATUS         SID   SERIAL#
------------------------------ -------- --------- ---------
SYS                            ACTIVE          11     38493

SQL> /

USERNAME                       STATUS         SID   SERIAL#
------------------------------ -------- --------- ---------
TEMP                           INACTIVE         9     38038
SYS                            ACTIVE          11     38493

SQL> alter system kill session '9,38038';

系统已更改。

SQL> select username,status,sid,serial# from v$session where username is not null;

USERNAME                       STATUS         SID   SERIAL#
------------------------------ -------- --------- ---------
TEMP                           KILLED           9     38038
SYS                            ACTIVE          11     38493

SQL>

 

 

这个解决方案是从网上找的,但是当执行的时候,提示[1]: (Error): ORA-00054: resource busy and acquire with NOWAIT specified。 我是在SQL navigator 中执行的。。。。。。

3,如果使用的是toad :

用sys用户进入,到DBA-->session browser-->lock下面去看,直接点删除就行了

 

 

 

select a.*,b.object_name, C.SID, C.SERIAL#
from v$locked_object a ,all_objects b ,v$session c
where a.OBJECT_ID=b.object_id AND a.SESSION_ID=c.SID
and c.USERNAME='XINHUA'

 

alter system kill session '968,39634';  --其中968 和 39643 分别为C.SID 和 C.SERIAL# 的值

原创粉丝点击