oracle 查询实锁常用的sql
2013-04-01 21:31
351 查看
1 .查询谁锁定了谁--查看某个session被另一个session锁定了,很好用。
2.查询谁被锁了
3 .同样查询锁的信息
5 .查询被锁的存储过程,有时候我们遇到某个存储过程编译不过去了,可以用下面的方法查询杀掉
杀掉会话
SELECT A.SID || ' is blocking ' || B.SID FROM GV$LOCK A, GV$LOCK B WHERE A.ID1 = B.ID1 AND A.ID2 = B.ID2 AND A.BLOCK = 1 AND B.REQUEST > 0 ;
2.查询谁被锁了
SELECT P.SPID, A.SERIAL#, C.OBJECT_NAME, B.SESSION_ID, B.ORACLE_USERNAME, B.OS_USER_NAME, B.LOCKED_MODE, A.LOCKWAIT, D.SQL_TEXT FROM GV$PROCESS P, GV$SESSION A, GV$LOCKED_OBJECT B, ALL_OBJECTS C,GV$sqlarea D WHERE P.ADDR = A.PADDR AND A.PROCESS = B.PROCESS AND C.OBJECT_ID = B.OBJECT_ID AND a.SID = b.SESSION_ID AND A.SQL_ADDRESS = D.ADDRESS;
3 .同样查询锁的信息
SELECT S.USERNAME, S.SID, S.SERIAL#, DECODE (LO.LOCKED_MODE, 0 , 'None' , 1 , 'Null' , 2 , 'Row-S(ss)' , 3 , 'Row-X(sx)' , 4 , 'share' , 5 , 's/row-x(ssx)' , 6 , 'Exclusive' , TO_CHAR(LO.LOCKED_MODE)) MODE_LOCKED, OBJECT LO, DBA_OBJECTS DO WHERE S.SID = LO.SESSION_ID LO.OS_USER_NAME, DO.OBJECT_NAME, DO.OBJECT_TYPE FROM V$SESSION S, V$LOCKED_ AND LO.OBJECT_ID = DO.OBJECT_ID;
5 .查询被锁的存储过程,有时候我们遇到某个存储过程编译不过去了,可以用下面的方法查询杀掉
SELECT p.SPID,S.sid FROM V$DB_OBJECT_CACHE OC, V$OBJECT_DEPENDENCY OD, DBA_KGLLOCK W, V$SESSION S, V$PROCESS P WHERE OD.TO_OWNER = OC.OWNER AND OD.TO_NAME = OC.NAME AND OD.TO_ADDRESS = W.KGLLKHDL AND W.KGLLKUSE = S.SADDR AND P.ADDR = S.PADDR AND OC.NAME = 'PKG_K_TEST'
杀掉会话
--根据sid 查询psid SELECT PRO.SPID FROM V$SESSION SES, V$PROCESS PRO WHERE SES.SID = : SID AND SES.PADDR = PRO.ADDR; --oracle 下杀掉相关进程 alter system kill session ‘sid,serial#’; linux 下查询相关线程 ps -ef|grep spid kill -9 spid
相关文章推荐
- oracle常用sql查询语句部分集合(图文)
- oracle常用的经典sql查询
- 常用Oracle查询SQL
- Oracle 常用SQL查询列表
- Oracle常用sql查询[转]
- oracle常用经典sql查询
- Oracle常用系统查询SQL
- Oracle 常用SQL查询列表
- Oracle 常用SQL查询列表
- oracle常用经典SQL查询
- Oracle常用经典SQL查询
- oracle常用经典SQL查询
- 常用SQL查询语句 Oracle中Union,Union All,Intersect,Minus的有什么区别
- Oracle常用经典SQL查询(二)
- oracle 常用性能查询SQL分享
- Oracle常用经典SQL查询(三)
- oracle常用经典SQL查询
- Oracle常用经典SQL查询(一)
- oracle常用经典SQL查询(转贴)
- oracle常用经典SQL查询