alter system kill session'494,7355';
二、一个有用查找脚本:
1、找到某表的锁 所属的sid,alter system kill session 'sid,serial#'
;即可
select v$lock.sid, decode(v$lock.type, 'MR', 'Media Recovery', 'RT', 'Redo Thread', 'UN', 'User Name', 'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL User Lock', 'DX', 'Distributed Xaction', 'CF', 'Control File', 'IS', 'Instance State', 'FS', 'File Set', 'IR', 'Instance Recovery', 'ST', 'Disk Space Transaction', 'TS', 'Temp Segment', 'IV', 'Library Cache Invalida-tion', 'LS', 'Log Start or Switch', 'RW', 'Row Wait', 'SQ', 'Sequence Number', 'TE', 'Extend Table', 'TT', 'Temp Table', 'Unknown') LockType, rtrim(owner) || '.' || object_name object_name, decode(lmode, 0, 'None', 1, 'Null', 2, 'Row-S', 3, 'Row-X', 4, 'Share', 5, 'S/Row-X', 6, 'Exclusive', 'Unknown') LockMode, decode(request, 0, 'None', 1, 'Null', 2, 'Row-S', 3, 'Row-X', 4, 'Share', 5, 'S/Row-X', 6, 'Exclusive', 'Unknown') RequestMode, ctime, block b from v$lock, all_objects where sid > 6 and v$lock.id1 = all_objects.object_id;
2、查出被lock 的对象,然后 alter system kill session 'sid,serial#'
;
select object_id, session_id, serial#, oracle_username, os_user_name, s.process from v$locked_object a, v$session s where a.session_id = s.sid;
三、LOCK TABLE
1、语法:
LOCK TABLE table_1 [,table_2, ..., table_n] IN lock_mode MODE NOWAIT
2、变量:
table_1,...,table_n: 一系列你想通过使用LOCK TABLE语句锁住的数据库表。
lock_mode: 对于某一数据库表你要设定的锁定模式。你可以从如下的锁定模式中任选一个。
- EXCLUSIVE
- SHARE ROW EXCLUSIVE
- SHARE
- SHARE UPDATE
- ROW SHARE
- ROW EXCLUSIVE
NOWAIT: Oracle will not wait to lock the given Table(s), if the Table(s) is(are) not available
3、例子:
LOCK TABLE loan IN SHARE MODE ; LOCK TABLE region IN EXCLUSIVE MODE NOWAIT; LOCK TABLE acct IN SHARE UPDATE MODE; LOCK TABLE bank IN ROW EXCLUSIVE MODE NOWAIT; LOCK TABLE user IN SHARE ROW EXCLUSIVE MODE; LOCK TABLE branch IN ROW SHARE MODE NOWAIT; commit
到此这篇关于Oracle锁(lock)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。