【发布时间】:2015-04-24 10:11:35
【问题描述】:
解锁 oracle 表有哪些不同的技术?
我尝试了什么。
-
获取锁定表的对象ID:
SELECT object_id FROM dba_objects WHERE object_name='YOUR TABLE NAME';
-
获取此 ID 的 SID 值:
SELECT sid FROM v$lock WHERE id1=OBJECT ID FROM STEP1
-
获取这些 SID 的会话值:
SELECT sid, serial# from v$session where sid in (COMMA SEPARATED LIST OF SIDs FROM STEP2.)
-
杀死导致锁定的会话:
ALTER SYSTEM KILL SESSION (SID,SERIAL#)
对第 3 步中的值
例如ALTER SYSTEM KILL SESSION '231,23454'
但问题是我有很多被锁定的表是否有任何其他解锁表的技术。
我正在使用SQLDeveloper 有没有直接解锁的选项。
【问题讨论】:
-
为什么要解锁表?行上的事务锁很好,它们可以保护您免受损坏。如果锁在表上,您可以更好地检查它们为什么在表上。锁可能是一个问题,但只有当它们被阻塞并且持续时间很长时。应用程序设计是在出现问题时首先检查的,
-
@ik_zelf,是的,你是对的,但我想解锁表,因为我无法执行任何操作,甚至无法检查这些表被锁定的原因。
-
你所做的很危险,仅供参考。您正在为数据损坏做好准备。如果您的应用程序锁定行以进行更新而不是解锁它们,您需要关闭应用程序并找出原因,而不是解锁行并让人们重新开始工作。
-
@mmmmmpie,Thaks,但这不是实时环境,这只是一个测试环境,而且我无法找出锁定的原因,所以直到我解锁我也无法调试的表。跨度>
标签: mysql oracle session locking