Oracle锁信息查询

--Oracle锁信息查询
--查询oracle会话信息
SELECT * FROM V$SESSION T ORDER BY t."LOGON_TIME";
--查询oracle等待的会话信息
SELECT * FROM V$SESSION_WAIT T ORDER BY t."SECONDS_IN_WAIT" DESC;
--查询oracle所有的锁
SELECT * FROM V$LOCK T ORDER BY t."LMODE" DESC;
--查询oracle包含DML的锁信息
SELECT * FROM V$LOCKED_OBJECT T;
--查询oracle对v$lock的格式化视图
SELECT * FROM DBA_LOCKS T ORDER BY T.MODE_HELD;
--查询oracle进程信息
SELECT * FROM V$PROCESS T;
--查询oracle执行过的sql语句
SELECT * FROM V$SQL T;
SELECT * FROM V$SQLAREA T ORDER BY t."FIRST_LOAD_TIME";

--查询oracle死锁进程与解锁语句 
SELECT T1."SID",
       T1."SERIAL#",
       T2."ORACLE_USERNAME",
       T2."OS_USER_NAME",
       T3.OBJECT_NAME,
       T2."LOCKED_MODE",
       'ALTER SYSTEM KILL SESSION ''' || T1.SID || ',' || T1.SERIAL# || '''' AS FREESQL
  FROM V$SESSION T1, V$LOCKED_OBJECT T2, DBA_OBJECTS T3
 WHERE T1."SID" = T2."SESSION_ID"
   AND T2."OBJECT_ID" = T3.OBJECT_ID;
--杀掉锁表进程:如有记录则表示有lock,记录下SID和serial#,将记录的ID替换下面的738,1429,即可解除LOCK 
--ALTER SYSTEM KILL SESSION '434,45624';

--查询oracle正在执行的sql语句及执行该语句的用户
SELECT T2.SID      AS ORACLEID,
       T2.USERNAME AS ORACLE用户,
       T2.SERIAL#,
       T1.SPID     AS 操作系统ID,
       T2.PADDR,
       T3.SQL_TEXT AS 正在执行的SQL,
       T2.MACHINE  AS 计算机名,
       T2."STATUS"
  FROM V$PROCESS T1, V$SESSION T2, V$SQLAREA T3
 WHERE T1.ADDR = T2.PADDR
   AND T2.SQL_HASH_VALUE = T3.HASH_VALUE
   AND t2."STATUS" = 'ACTIVE'
 ORDER BY T2.USERNAME;

--查询oracle正在执行的sql
SELECT T1.SERIAL#,
       T1.OSUSER     AS 电脑登录身份,
       T1.PROGRAM    AS 发起请求的程序,
       T1.USERNAME   AS 登录系统的用户名,
       T1.SCHEMANAME,
       T2.CPU_TIME   AS 花费CPU的时间,
       T1.STATUS,
       T2.SQL_TEXT   AS 执行的SQL
  FROM V$SESSION T1, V$SQL T2
 WHERE T1.SQL_ADDRESS = T2.ADDRESS
   AND T1.SQL_HASH_VALUE = T2.HASH_VALUE
   AND t1."STATUS" = 'ACTIVE'
 ORDER BY T2.CPU_TIME DESC;

--查询oracle锁定表
SELECT T1.SID,
       T1.SERIAL#,
       T1.USERNAME,
       T1.SCHEMANAME,
       T1.OSUSER,
       T1.PROCESS,
       T1.MACHINE,
       T1.TERMINAL,
       T1.LOGON_TIME,
       T2."LMODE",
       T2.TYPE
  FROM V$SESSION T1, V$LOCK T2
 WHERE T1.SID = T2.SID
   AND T1.USERNAME IS NOT NULL
 ORDER BY T2."LMODE" DESC;

--查询oracle锁
SELECT T1.USERNAME    AS USER_NAME,
       T3.OBJECT_NAME AS OBJECT_NAME,
       T2.TYPE        AS LOCK_TYPE,
       T2.LMODE,
       T3.OWNER,
       T2.SID,
       T1.SERIAL#     AS SERIAL_NUM,
       T2.ID1,
       T2.ID2,
       T1.PADDR
  FROM V$SESSION T1, V$LOCK T2, SYS.DBA_OBJECTS T3
 WHERE t1."SID" = t2."SID"
   AND t2."ID1" = T3.OBJECT_ID
   AND T3.OWNER <> 'SYS'
 ORDER BY T3.OWNER, T3.OBJECT_NAME;

--查询oracle死锁
SELECT T1.SESSION_ID SID,
       T3.SERIAL#,
       T1.LOCKED_MODE,
       T1.ORACLE_USERNAME,
       T1.OS_USER_NAME,
       T3.MACHINE,
       T3.TERMINAL,
       T2.OBJECT_NAME,
       T3.LOGON_TIME
  FROM V$LOCKED_OBJECT T1, ALL_OBJECTS T2, V$SESSION T3
 WHERE T1.OBJECT_ID = T2.OBJECT_ID
   AND T1.SESSION_ID = T3.SID
 ORDER BY SID, T3.SERIAL#;

--查询oracle所有锁信息
SELECT T1."TYPE",
       T1."LMODE",
       T2."SERIAL#",
       T2."OSUSER",
       T2."USERNAME",
       T2."SCHEMANAME",
       T3."CPU_TIME",
       T2."STATUS",
       T3."SQL_TEXT"
  FROM V$LOCK T1, V$SESSION T2, V$SQL T3
 WHERE T1."SID" = T2."SID"
   AND T2."SQL_ADDRESS" = T3."ADDRESS"
   AND T2."SQL_HASH_VALUE" = T3."HASH_VALUE"
 ORDER BY T1."LMODE" DESC;

--查询sql和对应的锁信息
SELECT T1.SID, T1.SERIAL#, T1.USERNAME, T1.EVENT, T2.SQL_TEXT, t3."LMODE"
  FROM V$SESSION T1, V$SQL T2, V$LOCK T3
 WHERE T1.PREV_SQL_ID = T2.SQL_ID
   AND T1.SID = T3.SID
   AND t2."SQL_TEXT" LIKE '%select * from sms for update%';
 

猜你喜欢

转载自blog.csdn.net/hualei_c/article/details/88018681