午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    Oracle阻塞(blockingblocked)實(shí)例詳解
    來(lái)源:易賢網(wǎng) 閱讀:1442 次 日期:2014-07-15 19:17:21
    溫馨提示:易賢網(wǎng)小編為您整理了“Oracle阻塞(blockingblocked)實(shí)例詳解”,方便廣大網(wǎng)友查閱!

    一、概述:

    阻塞是DBA經(jīng)常碰到的情形,尤其是不良的應(yīng)用程序設(shè)計(jì)所造成的阻塞將導(dǎo)致數(shù)據(jù)庫(kù)性能的嚴(yán)重下降,直至數(shù)據(jù)庫(kù)崩潰。對(duì)DBA而言,有必要知道如何定位到當(dāng)前系統(tǒng)有哪些阻塞,到底誰(shuí)是阻塞者,誰(shuí)是被阻塞者。本文對(duì)此給出了描述并做了相關(guān)演示。

    二、演示阻塞:

    --更新表,注,提示符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)

    --另起兩個(gè)session更新同樣的行,這兩個(gè)session都會(huì)處于等待,直到第一個(gè)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;

    --下面在第一個(gè)session 查詢阻塞情況

    scott@CNMMBO> @blocker

    BLOCK_MSG                        BLOCK

    -------------------------------------------------- ----------

    pts/5 ('1073,4642') is blocking 1067,10438         1

    pts/5 ('1073,4642') is blocking 1065,4464          1

    --上面的結(jié)果表明session 1073,4642 阻塞了后面的2個(gè)

    --即session 1073,4642是阻塞者,后面2個(gè)session是被阻塞者

    --Author : Leshami

    --Blog  : http://blog.csdn.net/leshami

    --下面查詢正在阻塞的session id,SQL語(yǔ)句以及被阻塞的時(shí)間

    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

    --下面的查詢阻塞時(shí)鎖的持有情況

    scott@CNMMBO> @request_lock_type

    USERNAME               SID TY LMODE    REQUEST      ID1    ID2

    ------------------------------ ---------- -- ----------- ----------- ---------- ----------

    SCOTT                1073 TX Exclusive  None      524319   27412

    LESHAMI               1067 TX None    Exclusive    524319   27412

    GOEX_ADMIN              1065 TX None    Exclusive    524319   27412

    --可以看到LESHAMI,GOEX_ADMIN 2個(gè)用戶都在請(qǐng)求524319/27412上的Exclusive鎖,而此時(shí)已經(jīng)被SCOTT加了Exclusive鎖

    --查詢阻塞時(shí)鎖的持有詳細(xì)信息

    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

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

    robin@SZDB:~/dba_scripts/custom/sql> more my_env.sql

    SELECT spid, s.sid, s.serial#, p.username, p.program

    FROM v$process p, v$session s

    WHERE 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$sqlarea

    SELECT   '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.address

    ORDER 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$lock

    SELECT 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.id2

    FROM v$session sn, v$lock m

    WHERE (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.sql

    set linesize 190

    col osuser format a15

    col username format a20 wrap

    col object_name format a20 wrap

    col terminal format a25 wrap

    col Req_Mode format a20

    select 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 C

    where A.OBJECT_ID(+) = B.ID1

     and B.SID = C.SID

     and C.USERNAME is not null

    order by B.SID, B.ID2;

    更多信息請(qǐng)查看IT技術(shù)專欄

    更多信息請(qǐng)查看腳本欄目
    易賢網(wǎng)手機(jī)網(wǎng)站地址:Oracle阻塞(blockingblocked)實(shí)例詳解
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國(guó)考·省考課程試聽(tīng)報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)