--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%';