亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle 阻塞(blocking blocked)介紹和實例演示

2024-08-29 13:58:14
字體:
來源:轉載
供稿:網友

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

1、阻塞及其類型

a、什么是阻塞
   一個會話持有某個資源的鎖,而另一個會話在請求這個資源,就會出現阻塞(blocking)。也就是說新的會話會被掛起,直到持有鎖的會話放棄鎖定的資源。大多數情況下,在一個交互式應用中被嚴重阻塞,即可表明應用邏輯有問題,這才是阻塞的根源。
b、阻塞得類型
   數據庫中有5條常見的DML語句可能會阻塞,即:INSERT、UPDATE、DELETE、MERGE 和SELECT FOR UPDATE。

2、幾種不同類型阻塞的處理辦法

a、INSERT阻塞主要是由于有一個帶主鍵的表,或者表上有惟一的約束,在兩個會話試圖用同樣的值插入一行時引發阻塞。多表通過引用完整性約束相互鏈接時,在其依賴的父表正在創建或刪除期間,對子表的插入可能會阻塞。對于該類情形建議使用序列來生成主鍵/惟一列值。
b、對于UPDATE、DELETE、MERGE 和SELECT FOR UPDATE阻塞,只要有任一session使用這些操作已經鎖定行,其余的必須處于等待狀態。直到當前鎖定行上的鎖(排他鎖)釋放。對于該類情形,建議盡可能快速提交事務,或采用批量SQL方式提交。
c、對于一個阻塞的SELECT FOR UPDATE,解決方案很簡單:只需增加NOWAIT 子句,它就不會阻塞了。

3、演示阻塞

--更新表,注,提示符scott@CNMMBO表明用戶為scott的session,用戶名不同,session不同。scott@CNMMBO> update emp set sal=sal*1.1 where empno=7788;1 row updated.scott@CNMMBO> @my_envSPID 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> @blockerBLOCK_MSGBLOCK-------------------------------------------------- ----------pts/5 ('1073,4642') is blocking 1067,104381pts/5 ('1073,4642') is blocking 1065,44641--上面的結果表明session 1073,4642 阻塞了后面的2個--即session 1073,4642是阻塞者,后面2個session是被阻塞者--Author : Leshami--Blog : --下面查詢正在阻塞的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=7788sid=1065 Wait Class=Application Time=225 Query=update scott.emp set sal=sal-50 where empno=7788--下面的查詢阻塞時鎖的持有情況 scott@CNMMBO> @request_lock_typeUSERNAMESID TY LMODE REQUEST ID1 ID2------------------------------ ---------- -- ----------- ----------- ---------- ----------SCOTT1073 TX Exclusive None 524319 27412LESHAMI1067 TX None Exclusive 524319 27412GOEX_ADMIN1065 TX None Exclusive 524319 27412--可以看到LESHAMI,GOEX_ADMIN 2個用戶都在請求524319/27412上的Exclusive鎖,而此時已經被SCOTT加了Exclusive鎖--查詢阻塞時鎖的持有詳細信息scott@CNMMBO> @request_lock_detailSID USERNAME OSUSER TERMINALOBJECT_NAME TY Lock Mode Req_Mode---------- -------------------- --------------- ------------------------- -------------------- -- ----------- -------------------- 1065 GOEX_ADMIN robin pts/1EMPTM Row Excl 1065 GOEX_ADMIN robin pts/1Trans-524319 TX --Waiting-- Exclusive 1067 LESHAMI robin pts/0EMPTM Row Excl 1067 LESHAMI robin pts/0Trans-524319 TX --Waiting-- Exclusive 1073 SCOTT robin pts/5EMPTM Row Excl 1073 SCOTT robin pts/5Trans-524319 TX Exclusive

文中涉及到的相關腳本如下:

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 sidFROM v$mystatWHERE 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 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.sidAND m.request = 0 AND lmode != 4AND (id1, id2) IN (SELECT s.id1, s.id2 FROM v$lock sWHERE request != 0AND s.id1 = m.id1AND 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;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲新声在线观看| 国产日韩欧美日韩| 91在线精品视频| 欧美性生交xxxxxdddd| 国产剧情日韩欧美| 538国产精品一区二区在线| 在线日韩日本国产亚洲| 欧美精品手机在线| 川上优av一区二区线观看| 国产精品精品久久久久久| 色综合色综合久久综合频道88| www.日韩免费| 亚洲精品第一国产综合精品| 欧美日韩亚洲网| 日韩欧美国产网站| 精品人伦一区二区三区蜜桃免费| 国产精品久久久久久久久久小说| 国产精品美女久久久久av超清| 欧美乱人伦中文字幕在线| 亚洲精品免费网站| 亚洲va男人天堂| 欧美精品18videosex性欧美| 国产成人福利夜色影视| 亚洲国产欧美在线成人app| 亚洲欧洲在线观看| 538国产精品一区二区免费视频| 欧美激情奇米色| 欧美老女人性生活| 色综合久久88色综合天天看泰| 欧美成年人视频网站| 日韩在线视频播放| 亚洲少妇激情视频| 亚洲精品视频播放| www.日本久久久久com.| 久久免费视频网站| 亚洲系列中文字幕| 国产精自产拍久久久久久| 亚洲香蕉成人av网站在线观看| 国产精品视频99| 麻豆精品精华液| 国产视频精品自拍| 国产精品久久不能| 91欧美激情另类亚洲| 韩国视频理论视频久久| 亚洲欧美福利视频| 欧美成aaa人片在线观看蜜臀| 九九热在线精品视频| 日韩中文字幕免费看| 久久综合色影院| 欧美精品电影免费在线观看| 日韩专区中文字幕| 国产91精品视频在线观看| 亚洲美女性视频| 国产精品久久久久久亚洲影视| 欧美国产日韩二区| 国产97色在线|日韩| 中文字幕久久亚洲| 亚洲欧洲第一视频| 日韩av资源在线播放| 九九九热精品免费视频观看网站| 日韩精品免费在线播放| 国产精品 欧美在线| 国产不卡在线观看| 一本一本久久a久久精品综合小说| 成人美女av在线直播| 91亚洲人电影| 亚洲人成伊人成综合网久久久| 中文字幕日本欧美| 日韩精品中文字| 久久久精品久久| 日本成人在线视频网址| 欧美激情在线播放| 国产日韩在线亚洲字幕中文| 精品久久久国产精品999| 亚洲综合在线做性| 亚洲图片欧洲图片av| 欧美日韩aaaa| 日韩av电影在线免费播放| 国产91成人在在线播放| 久久精品精品电影网| 亚洲国产精品久久久久秋霞蜜臀| 国产91精品最新在线播放| 欧美有码在线观看| 国产精品免费一区豆花| 日韩av在线精品| 欧美日韩国产激情| 日韩中文字幕欧美| 亚洲精品视频在线观看视频| 国产精品无av码在线观看| 亚洲成人性视频| 成人久久久久久久| 亚洲人成绝费网站色www| 亚洲福利视频二区| 一区二区欧美久久| 亚洲一区二区三| 国产精品久久久久久久7电影| 久久91亚洲精品中文字幕奶水| 国产激情久久久久| 91色琪琪电影亚洲精品久久| 亚洲欧洲在线免费| 国产精品第1页| 久久男人的天堂| 日韩欧美国产免费播放| 欧美极品少妇全裸体| 欧美在线视频免费播放| 亚洲xxx视频| 亚洲日本中文字幕免费在线不卡| 久久久国产精品免费| 国产精品老女人视频| 国产成人小视频在线观看| 人人做人人澡人人爽欧美| 综合国产在线观看| 91在线色戒在线| 91精品视频播放| www.亚洲人.com| 日韩中文理论片| 91精品国产综合久久香蕉的用户体验| 成人黄色中文字幕| 国产精品入口夜色视频大尺度| 久久深夜福利免费观看| 91精品在线国产| 日韩在线免费视频观看| 亚洲黄页网在线观看| 国产精品爽爽爽| 色老头一区二区三区在线观看| 亚洲精品一区二区三区婷婷月| 96pao国产成视频永久免费| 亚洲一区av在线播放| 成人免费直播live| 久久精品国产一区二区电影| 国产精品久久久久久久久影视| 亚洲伊人一本大道中文字幕| 欧美成人自拍视频| 欧美成aaa人片在线观看蜜臀| www.日本久久久久com.| 成人黄色中文字幕| 九九视频直播综合网| 日韩中文字幕亚洲| 国产香蕉97碰碰久久人人| 亚洲毛片在线看| 午夜精品蜜臀一区二区三区免费| 亚洲精品之草原avav久久| 2019中文在线观看| 亚洲精品白浆高清久久久久久| 国产精品老牛影院在线观看| 97在线观看视频国产| 国产免费观看久久黄| 国产福利视频一区| 精品爽片免费看久久| 亚洲精品视频在线观看视频| 日韩在线中文字幕| 91精品国产九九九久久久亚洲| 日韩欧美一区二区三区久久| 欧美裸体xxxx极品少妇| 日韩精品在线观看网站| 91精品国产色综合久久不卡98口| 精品久久久久久久大神国产| 91禁国产网站| 久久久国产影院| 亚洲精品自拍第一页| 国产在线观看精品| 久久免费视频在线观看| 丝袜一区二区三区| 8090理伦午夜在线电影|