1. 查看被锁定的表
SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL#,l.LOCKED_MODE,l.OS_USER_NAME
FROM GV$LOCKED_OBJECT L, DBA_OBJECTS O, GV$SESSION S
WHERE L.OBJECT_ID = O.OBJECT_ID
AND L.SESSION_ID = S.SID;
2.解锁kill进程
--alter system kill session 'sid, serial#';
--ALTER system kill session '23, 1647';
3. 锁定类型: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 5:S/Row-X 共享行专用(SRX):阻止其他事务操作 6:exclusive 专用(X):独立访问使用 数字越大锁级别越高, 影响的操作越多。 如果DML没有提交情况下,另一个session提交针对同一资源的DLL,系统报错。 如果DML没有提交情况下,另一个session提交针对同一资源的DML,第二个session会hang住,等待第一个session。 死锁: 系统会系统自动处理,处理方式提出形成死锁的人,错误是ORA-00060 命令行模式处理行级锁 查看锁: select sid,lock_id from dba_locks where blocking_others='Blocking'; sid列:占用资源sid select sid from v$lock where type='TX'; block列>0:占用资源sid block列=0:等待资源sid SELECT * FROM V$SESSION WHERE BLOCKING_SESSION IS NOT NULL; sid列:等待资源sid blocking_session列:占用资源sid oracle级处理: 杀掉占用资源的session 1. 查询sid和serial# select sid, serial# from v$session where sid = (select blocking_session from v$session where blocking_session is not null) 2. 杀进程 alter system kill session 'sid, serial#' immediate; 杀掉等待资源的session 1. 查询sid和serial# select sid, serial# from v$session where blocking_session is not null; 2. 杀进程 alter system kill session 'sid, serial#' immediate; 系统级处理: 1. 查询系统pid select s.sid, p.spid from v$session s, v$process p where s.paddr = p.addr and s.sid = 146 2. 杀进程 kill -9 pid