Oracle異常排查命令

1.查詢會話等待事件及對應(yīng)的sql

SELECT P.PID,

? ? ? S.SID,

? ? ? S.SERIAL#,

? ? ? S.USERNAME,

? ? ? Q.SQL_ID,

? ? ? Q.SQL_TEXT,

? ? ? Q.SQL_FULLTEXT,

? ? ? E.EVENT,

? ? ? E.TOTAL_WAITS,

? ? ? E.TIME_WAITED,

? ? ? E.AVERAGE_WAIT

? FROM V$SESSION S, V$SESSION_EVENT E, V$SQLAREA Q, V$PROCESS P

WHERE S.SID = E.SID

? AND S.SQL_ID = Q.SQL_ID

? AND P.ADDR = S.PADDR

? AND E.EVENT NOT LIKE 'SQL*Net%'

? AND S.STATUS = 'ACTIVE'

? AND S.USERNAME IS NOT NULL;

2.查詢長時間運(yùn)行的會話與對應(yīng)的sql

SELECT S.SID,

? ? ? OPNAME,

? ? ? TRUNC(L.SOFAR / L.TOTALWORK * 100, 2) || '%' AS PCT_WORK,

? ? ? L.ELAPSED_SECONDS ELAPSED,

? ? ? ROUND(L.ELAPSED_SECONDS * (L.TOTALWORK - L.SOFAR) / L.SOFAR) REMAIN_TIME,

? ? ? Q.SQL_TEXT

? FROM V$SESSION_LONGOPS L, V$SQLAREA Q, V$SESSION S

WHERE L.SQL_HASH_VALUE = Q.HASH_VALUE

? AND L.SID = S.SID

? --AND L.SOFAR != L.TOTALWORK

? AND L.ELAPSED_SECONDS>6

ORDER BY L.START_TIME

3.查詢會話及鎖與對應(yīng)的sql

SELECT A.OWNER 方案名,

? ? ? A.OBJECT_NAME 表名,

? ? ? B.XIDUSN 回滾段號,

? ? ? B.XIDSLOT 槽號,

? ? ? B.XIDSQN 序列號,

? ? ? B.SESSION_ID 鎖表SESSION_ID,

? ? ? B.ORACLE_USERNAME 鎖表用戶名,

? ? ? DECODE(D.TYPE,

? ? ? ? ? ? ? 'XR',

? ? ? ? ? ? ? 'NULL',

? ? ? ? ? ? ? 'RS',

? ? ? ? ? ? ? 'SS(Row-S)',

? ? ? ? ? ? ? 'CF',

? ? ? ? ? ? ? 'SS(Row-S)',

? ? ? ? ? ? ? 'TM',

? ? ? ? ? ? ? 'TABLE LOCK',

? ? ? ? ? ? ? 'PW',

? ? ? ? ? ? ? 'TABLE LOCK',

? ? ? ? ? ? ? 'TO',

? ? ? ? ? ? ? 'TABLE LOCK',

? ? ? ? ? ? ? 'TS',

? ? ? ? ? ? ? 'TABLE LOCK',

? ? ? ? ? ? ? 'RT',

? ? ? ? ? ? ? 'ROW LOCK',

? ? ? ? ? ? ? 'TX',

? ? ? ? ? ? ? 'ROW LOCK',

? ? ? ? ? ? ? 'MR',

? ? ? ? ? ? ? 'S(Share)',

? ? ? ? ? ? ? NULL) 鎖定方式,

? ? ? C.MACHINE 用戶組,

? ? ? C.TERMINAL 機(jī)器名,

? ? ? B.OS_USER_NAME 系統(tǒng)用戶名,

? ? ? B.PROCESS 系統(tǒng)進(jìn)程ID,

? ? ? DECODE(C.STATUS, 'INACTIVE', '不活動', 'ACTIVE', '活動') 活動情況,

? ? ? C.SERVER,

? ? ? C.SID,

? ? ? E.SQL_TEXT,

? ? ? C.SERIAL#,

? ? ? C.PROGRAM 連接方式,

? ? ? C.LOGON_TIME

? FROM ALL_OBJECTS? ? A,

? ? ? V$LOCKED_OBJECT B,

? ? ? SYS.GV_$SESSION C,

? ? ? V$LOCK? ? ? ? ? D,

? ? ? V$SQLTEXT? ? ? E

WHERE (A.OBJECT_ID = B.OBJECT_ID)

? AND (B.PROCESS = C.PROCESS)

? AND C.SID = D.SID

? AND B.LOCKED_MODE = D.LMODE

? AND C.SQL_ID = E.SQL_ID(+)

ORDER BY 1, 2;

4.查詢被阻塞會話與被阻塞會話的對應(yīng)sql

SELECT S1.USERNAME "WAITING USER",

? ? ? S1.OSUSER? "OS User" ,

? ? ? S1.LOGON_TIME "logon time",

? ? ? W.SESSION_ID? "Sid",

? ? ? P1.SPID? ? ? "PID",

? ? ? Q1.SQL_TEXT? "SQLTEXT",

? ? ? S2.USERNAME? "HOLDING User",

? ? ? S2.OSUSER? ? "OS User"


? ? ? ,

? ? ? S2.LOGON_TIME "logon time",

? ? ? H.SESSION_ID? "Sid",

? ? ? P2.SPID? ? ? "PID",

? ? ? Q2.SQL_TEXT? "SQLTEXT"

? FROM SYS.V_$PROCESS P1,

? ? ? SYS.V_$PROCESS P2,

? ? ? SYS.V_$SESSION S1,

? ? ? SYS.V_$SESSION S2,

? ? ? DBA_LOCKS? ? ? W,

? ? ? DBA_LOCKS? ? ? H,

? ? ? V$SQL? ? ? ? ? Q1,

? ? ? V$SQL? ? ? ? ? Q2

WHERE H.MODE_HELD != 'None'

? AND H.MODE_HELD != 'Null'

? AND W.MODE_REQUESTED != 'None'

? AND W.LOCK_TYPE(+) = H.LOCK_TYPE

? AND W.LOCK_ID1(+) = H.LOCK_ID1

? AND W.LOCK_ID2(+) = H.LOCK_ID2

? AND W.SESSION_ID = S1.SID(+)

? AND H.SESSION_ID = S2.SID(+)

? AND S1.PADDR = P1.ADDR(+)

? AND S2.PADDR = P2.ADDR(+)

? AND S1.SQL_ID = Q1.SQL_ID(+)

? AND S2.SQL_ID = Q2.SQL_ID(+)

ORDER BY H.SESSION_ID;

5. 30分鐘內(nèi)執(zhí)行時間最長的語句

select ash.USER_ID,u.username,sum(ash.WAIT_TIME) ttl_wait_time,s.SQL_TEXT

from v$active_session_history ash, v$sqlarea s, dba_users u

where ash.SAMPLE_TIME between sysdate - 30/24/60 and sysdate

and ash.SQL_ID = s.SQL_ID

and ash.USER_ID = u.user_id

group by ash.USER_ID, s.SQL_TEXT, u.username

order by ttl_wait_time desc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容