oracle数据库实例被锁如何解决

oracle数据库实例被锁如何解决,第1张

在pl/sql Developer工具的的菜单“tools”里面的“sessions”可以查询现在存在的会话,但是我们很难找到那个会话被锁定了,想找到所以被锁的会话就更难了,下面这叫查询语句可以查询出所以被锁的会话。如下:

SELECT snusername, mSID,snSERIAL#, mTYPE,

DECODE (mlmode,

0, 'None',

1, 'Null',

2, 'Row Share',

3, 'Row Excl',

4, 'Share',

5, 'S/Row Excl',

6, 'Exclusive',

lmode, LTRIM (TO_CHAR (lmode, '990'))

) lmode,

DECODE (mrequest,

0, 'None',

1, 'Null',

2, 'Row Share',

3, 'Row Excl',

4, 'Share',

5, 'S/Row Excl',

6, 'Exclusive',

request, LTRIM (TO_CHAR (mrequest, '990'))

) request,

mid1, mid2

FROM v$session sn, v$lock m

WHERE (snSID = mSID AND mrequest != 0) --存在锁请求,即被阻塞

OR ( snSID = mSID --不存在锁请求,但是锁定的对象被其他会话请求锁定

AND mrequest = 0

AND lmode != 4

AND (id1, id2) IN (

SELECT sid1, sid2

FROM v$lock s

WHERE request != 0 AND sid1 = mid1

AND sid2 = mid2)

)

ORDER BY id1, id2, mrequest;

通过以上查询知道了sid和 SERIAL#就可以开杀了

alter system kill session 'sid,SERIAL#';

希望对你有所帮助。我也是不太懂,是在网上了解的。努力学习ing~~~

在对指定表做append *** 作,其他再做truncate时候,会产生锁表,如下验证步骤,

1、创建测试表,

create table test_lock(id number, value varchar2(200));

2、执行append语句;并且不做提交,insert /+append/ into test_lock values(1,1);

3、再次执行清表语句,truncate table test_lock;报锁表错误,

4、查看锁表语句,发现被锁表,

select bobject_name, t

from v$locked_object t, user_objects b

where tobject_id = bobject_id

在 MySQL 中,如果你显式的执行锁定语句(LOCK Tables )

那么你必须一次锁定在解锁之前需要访问的所有表,

而且,如果你以读锁定方式锁定的表,则不能对该表进行写 *** 作,也就是说,你使用什么方式进行的锁定,就只能进行什么方式的 *** 作

甚至如果你在 Query 语句中使用了别名,那么在之前的锁定中也必须使用别名

以上就是关于oracle数据库实例被锁如何解决全部的内容,包括:oracle数据库实例被锁如何解决、oracle表在什么情况下会被锁住、mysql数据库中,我用lock锁表后提示错误.劳驾帮忙看一下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9531393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存