日期:2014-05-16 浏览次数:20451 次
?
1.查看锁情况
select /*+ RULE */
?ls.osuser os_user_name,
?ls.username user_name,
?decode(ls.type,
?? ? ? ?'RW',
?? ? ? ?'Row wait enqueue lock',
?? ? ? ?'TM',
?? ? ? ?'DML enqueue lock',
?? ? ? ?'TX',
?? ? ? ?'Transaction enqueue lock',
?? ? ? ?'UL',
?? ? ? ?'User supplied lock') lock_type,
?o.object_name object,
?decode(ls.lmode,
?? ? ? ?1,
?? ? ? ?null,
?? ? ? ?2,
?? ? ? ?'Row Share',
?? ? ? ?3,
?? ? ? ?'Row Exclusive',
?? ? ? ?4,
?? ? ? ?'Share',
?? ? ? ?5,
?? ? ? ?'Share Row Exclusive',
?? ? ? ?6,
?? ? ? ?'Exclusive',
?? ? ? ?null) lock_mode,
?o.owner,
?ls.sid,
?ls.serial# serial_num,
?ls.id1,
?ls.id2
??from sys.dba_objects o,
?? ? ? (select s.osuser,
?? ? ? ? ? ? ? s.username,
?? ? ? ? ? ? ? l.type,
?? ? ? ? ? ? ? l.lmode,
?? ? ? ? ? ? ? s.sid,
?? ? ? ? ? ? ? s.serial#,
?? ? ? ? ? ? ? l.id1,
?? ? ? ? ? ? ? l.id2
?? ? ? ? ?from v$session s, v$lock l
?? ? ? ? where s.sid = l.sid) ls
?where o.object_id = ls.id1
?? and o.owner <> 'SYS'
?order by o.owner, o.object_name
?
--查询锁定状态的session
SELECT s.username,
?? ? ? l.OBJECT_ID,
?? ? ? l.SESSION_ID,
?? ? ? s.SERIAL#,
?? ? ? l.ORACLE_USERNAME,
?? ? ? l.OS_USER_NAME,
?? ? ? l.PROCESS
??FROM V$LOCKED_OBJECT l, V$SESSION S
?WHERE l.SESSION_ID = S.SID
?
--查询指定的某个session,通过status字段判断是否处于锁定状态
?select t.STATUS ?from ?V$SESSION t where sid = 1029
?
2.杀掉进程 ?kill session
alter system kill session 'sid,serial_num';
?
select sid,
?? ? ? serial#,
?? ? ? username,
?? ? ? program,
?? ? ? status,
?? ? ? sql_id,
?? ? ? blocking_instance,
?? ? ? blocking_session
??from v$session
?where event = 'enq: TX - row lock contention'
?order by blocking_session;