国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle阻塞(blockingblocked)實例詳解

2020-07-26 14:19:32
字體:
來源:轉載
供稿:網友

一、概述:

阻塞是DBA經常碰到的情形,尤其是不良的應用程序設計所造成的阻塞將導致數據庫性能的嚴重下降,直至數據庫崩潰。對DBA而言,有必要知道如何定位到當前系統有哪些阻塞,到底誰是阻塞者,誰是被阻塞者。本文對此給出了描述并做了相關演示。

二、演示阻塞:

--更新表,注,提示符scott@CNMMBO表明用戶為scott的session,用戶名不同,session不同。scott@CNMMBO> update emp set sal=sal*1.1 where empno=7788;1 row updated.scott@CNMMBO> @my_env SPID        SID  SERIAL# USERNAME    PROGRAM------------ ---------- ---------- --------------- ------------------------------------------------11205       1073    4642 robin      oracle@SZDB (TNS V1-V3) --另起兩個session更新同樣的行,這兩個session都會處于等待,直到第一個session提交或回滾leshami@CNMMBO> update scott.emp set sal=sal+100 where empno=7788; goex_admin@CNMMBO> update scott.emp set sal=sal-50 where empno=7788; --下面在第一個session 查詢阻塞情況scott@CNMMBO> @blocker  BLOCK_MSG                        BLOCK-------------------------------------------------- ----------pts/5 ('1073,4642') is blocking 1067,10438         1pts/5 ('1073,4642') is blocking 1065,4464          1--上面的結果表明session 1073,4642 阻塞了后面的2個--即session 1073,4642是阻塞者,后面2個session是被阻塞者 --Author : Leshami--Blog  : http://blog.csdn.net/leshami --下面查詢正在阻塞的session id,SQL語句以及被阻塞的時間scott@CNMMBO> @blocking_session_detail.sql 'SID='||A.SID||'WAITCLASS='||A.WAIT_CLASS||'TIME='||A.SECONDS_IN_WAIT||CHR(10)||'QUERY='||B.SQL_TEXT------------------------------------------------------------------------sid=1067 Wait Class=Application Time=5995 Query=update scott.emp set sal=sal+100 where empno=7788 sid=1065 Wait Class=Application Time=225 Query=update scott.emp set sal=sal-50 where empno=7788 --下面的查詢阻塞時鎖的持有情況 scott@CNMMBO> @request_lock_type USERNAME               SID TY LMODE    REQUEST      ID1    ID2------------------------------ ---------- -- ----------- ----------- ---------- ----------SCOTT                1073 TX Exclusive  None      524319   27412LESHAMI               1067 TX None    Exclusive    524319   27412GOEX_ADMIN              1065 TX None    Exclusive    524319   27412--可以看到LESHAMI,GOEX_ADMIN 2個用戶都在請求524319/27412上的Exclusive鎖,而此時已經被SCOTT加了Exclusive鎖 --查詢阻塞時鎖的持有詳細信息scott@CNMMBO> @request_lock_detail     SID USERNAME       OSUSER     TERMINAL         OBJECT_NAME     TY Lock Mode  Req_Mode---------- -------------------- --------------- ------------------------- -------------------- -- ----------- --------------------   1065 GOEX_ADMIN      robin      pts/1           EMP         TM Row Excl   1065 GOEX_ADMIN      robin      pts/1           Trans-524319     TX --Waiting-- Exclusive   1067 LESHAMI       robin      pts/0           EMP         TM Row Excl   1067 LESHAMI       robin      pts/0           Trans-524319     TX --Waiting-- Exclusive   1073 SCOTT        robin      pts/5           EMP         TM Row Excl   1073 SCOTT        robin      pts/5           Trans-524319     TX Exclusive 

三、文中涉及到的相關SQL腳本完整代碼如下:

robin@SZDB:~/dba_scripts/custom/sql> more my_env.sql SELECT spid, s.sid, s.serial#, p.username, p.programFROM v$process p, v$session sWHERE p.addr = s.paddr   AND s.sid = (SELECT sid          FROM v$mystat          WHERE rownum = 1);robin@SZDB:~/dba_scripts/custom/sql> more blocker.sql col block_msg format a50; select c.terminal||' ('''||a.sid||','||c.serial#||''') is blocking '||b.sid||','||d.serial# block_msg, a.block from v$lock a,v$lock b,v$session c,v$session d  where a.id1=b.id1  and a.id2=b.id2  and a.block>0 and a.sid <>b.sid  and a.sid=c.sid  and b.sid=d.SID; robin@SZDB:~/dba_scripts/custom/sql> more blocking_session_detail.sql--To find the query for blocking session--Access Privileges: SELECT on v$session, v$sqlareaSELECT   'sid='     || a.SID     || ' Wait Class='     || a.wait_class     || ' Time='     || a.seconds_in_wait     || CHR (10)     || ' Query='     || b.sql_text  FROM v$session a, v$sqlarea b  WHERE a.blocking_session IS NOT NULL AND a.sql_address = b.addressORDER BY a.blocking_session/robin@SZDB:~/dba_scripts/custom/sql> more request_lock_type.sql--This script generates a report of users waiting for locks.--Access Privileges: SELECT on v$session, v$lockSELECT sn.username, m.sid, m.type,    DECODE(m.lmode, 0, 'None',            1, 'Null',            2, 'Row Share',            3, 'Row Excl.',            4, 'Share',            5, 'S/Row Excl.',            6, 'Exclusive',        lmode, ltrim(to_char(lmode,'990'))) lmode,    DECODE(m.request,0, 'None',             1, 'Null',             2, 'Row Share',             3, 'Row Excl.',             4, 'Share',             5, 'S/Row Excl.',             6, 'Exclusive',             request, ltrim(to_char(m.request,        '990'))) request, m.id1, m.id2FROM v$session sn, v$lock mWHERE (sn.sid = m.sid AND m.request != 0)    OR (sn.sid = m.sid        AND m.request = 0 AND lmode != 4        AND (id1, id2) IN (SELECT s.id1, s.id2   FROM v$lock s            WHERE request != 0       AND s.id1 = m.id1                AND s.id2 = m.id2)        )ORDER BY id1, id2, m.request; robin@SZDB:~/dba_scripts/custom/sql> more request_lock_detail.sqlset linesize 190col osuser format a15col username format a20 wrapcol object_name format a20 wrapcol terminal format a25 wrapcol Req_Mode format a20select B.SID, C.USERNAME, C.OSUSER, C.TERMINAL,    DECODE(B.ID2, 0, A.OBJECT_NAME,      'Trans-'||to_char(B.ID1)) OBJECT_NAME,   B.TYPE,    DECODE(B.LMODE,0,'--Waiting--',           1,'Null',           2,'Row Share',           3,'Row Excl',          4,'Share',           5,'Sha Row Exc',      6,'Exclusive',            'Other') "Lock Mode",    DECODE(B.REQUEST,0,' ',           1,'Null',           2,'Row Share',           3,'Row Excl',           4,'Share',           5,'Sha Row Exc',           6,'Exclusive',           'Other') "Req_Mode" from DBA_OBJECTS A, V$LOCK B, V$SESSION Cwhere A.OBJECT_ID(+) = B.ID1 and B.SID = C.SID and C.USERNAME is not nullorder by B.SID, B.ID2;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三河市| 普兰县| 都昌县| 抚远县| 眉山市| 天柱县| 光山县| 万安县| 连南| 祁门县| 定襄县| 会东县| 双江| 雷波县| 揭东县| 青川县| 昆明市| 彭山县| 平潭县| 涿州市| 长沙县| 珲春市| 本溪市| 沽源县| 龙州县| 秀山| 西林县| 洛浦县| 霍州市| 文安县| 绥棱县| 浦北县| 色达县| 边坝县| 普兰县| 垦利县| 怀集县| 航空| 罗源县| 年辖:市辖区| 铅山县|