ITPub博客

首页 > 数据库 > Oracle > 如何解数据库锁

如何解数据库锁

原创 Oracle 作者:pan_tian 时间:2014-07-02 12:13:53 0 删除 编辑
一些误操作可能会造成数据被锁,可以尝试用下边的脚本来解锁
脚本可行,已经试用多次
Column SID         FORMAT 9999999 heading "Sess|ID "
COLUMN SERIAL#     FORMAT 9999999  heading "Serial# "
COLUMN OBJECT_NAME FORMAT A17 heading "OBJ NAME or|TRANS_ID" Trunc
COLUMN OSUSER      FORMAT A10 heading "Op Sys|User ID"
COLUMN USERNAME    FORMAT A8
select
B.SID,
C.SERIAL#,
C.USERNAME,
C.OSUSER,
DECODE(B.ID2, 0, A.OBJECT_NAME,\'Trans-\'||to_char(B.ID1)) OBJECT_NAME,
B.TYPE,
DECODE(B.LMODE,0,\'--Waiting--\',
               1,\'Null\',
               2,\'Row Share\',
               3,\'Row Excl\',
               4,\'Share\',
               5,\'Sha Row Exc\',
               6,\'Exclusive\',
                 \'Other\') "Lock Mode",
DECODE(B.REQUEST,0,\' \',
                 1,\'Null\',
                 2,\'Row Share\',
                 3,\'Row Excl\',
                 4,\'Share\',
                 5,\'Sha Row Exc\',
                 6,\'Exclusive\',
                   \'Other\') "Req Mode"
from DBA_OBJECTS A, V$LOCK B, V$SESSION C
where A.OBJECT_ID = B.ID1
    and B.SID = C.SID
    and C.USERNAME is not null
    and A.object_name like upper(\'inv_rcv_std_rcpt_apis\')  --可能被锁的表名
/
--3.oracle 解锁
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
--查看锁
--alter system kill session \'sid,serial#\';
--把锁给KILL掉
--146为sid,21177为serial#
alter system kill session \'146,21177\';
还有一种简单方法:
如果你在试用Toad,可以直接切换到“Toad Session Browser”,找到可疑的锁,直接解锁
<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26687597/viewspace-1203619/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: NAME_IN and COPY built-in
下一篇: PO Approve Script
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2012-02-18

最新文章