科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道诊断Oracle数据库Hanging问题

诊断Oracle数据库Hanging问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

适用范围:Oracle任何平台上的企业版数据库 适用对象:所有数据库管理员和数据库支持人员 本文目的:这篇文章主要描述用于诊断数据库hanging和性能问题的方法和 工具,这些问题可能是由于调整问题。

作者:中国IT实验室 来源:中国IT实验室 2007年10月7日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

    如果是指定的查询被挂起了,可以使用下面的查询找出相应的查询SQL语句:

    通过操作系统上的PID找出相应的SQL语句的SID:

    SELECT s.sid, p.spid

    FROM v$session s, v$process p

    WHERE s.paddr = p.addr

    AND …… < p.spid = <os pid> or perhaps

    s.sid = <sid from v$session> >

    然后通过SID找出相应的SQL语句的具体内容:

    SELECT s.sid, s.status, q.sql_text

    FROM v$session s, v$sqltext q

    WHERE s.sql_hash_value = q.hash_value

    AND s.sql_address = q.address

    AND s.sid = <sid>

    order by q.piece;

    查询V$SESSION_WAIT视图看看当前的等待事件

    column sid format 990

    column seq# format 99990

    column wait_time heading 'WTime' format 99990

    column event format a30

    column p1 format 9999999990

    column p2 format 9999999990

    column p3 format 9990

    select sid,event,seq#,p1,p2,p3,wait_time from V$session_wait

    where sid=<SID>

    order by sid;

    查询当前挂起数据库的SQL语句中的lockwait设置的是多少,如果非空,那么看看什么锁住了当前对象,是什么类型的锁。

    SELECT lockwait

    FROM v$session

    WHERE sid = <sid>;

    col Username format A15

    col Sid format 9990 heading SID

    col Type format A4

    col Lmode format 990 heading 'HELD'

    col Request format 990 heading 'REQ'

    col Id1 format 9999990

    col Id2 format 9999990

    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',

    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',

    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;

    查询v$process视图中的LATCHWAIT设置是多少?如果这个值非空,那么继续查是谁保存了这个latch.

    SELECT latchwait

    FROM v$process

    WHERE spid = <pid>;SELECT latchwait

    FROM v$process

    WHERE spid = <pid>;

    column name format a32 heading 'LATCH NAME'

    column pid heading 'HOLDER PID'

    select c.name,a.addr,a.gets,a.misses,a.sleeps,

    a.immediate_gets,a.immediate_misses,b.pid

    from v$latch a, v$latchholder b, v$latchname c

    where a.addr = b.laddr(+) and a.latch# = c.latch#

    and c.name like '&latch_name%' order by a.latch#;

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    闂備緡鍙庨崰鏇炩枎閵忋垺濯奸柕蹇嬪€栭~锟�

    婵犵鈧啿鈧綊鎮樻径鎰畺闁靛ň鏅滄慨婊堟偨椤栨稓鎽冮柟鐑╂櫊瀹曟岸宕堕埡鍌滄殸闂佽鍨伴崢鏍姳閿涘嫭鍠嗘い銈呭姬婵☆偅婢樺Λ妤呮偂濞嗘挸瀚夐柍褜鍓熷顒侊紣娓氣偓閻涙捇鏌涘┑鍛樂缂佹鐭傞獮搴ㄥ焵椤掑嫬瀚夋い鏍ㄧ懁缁诲棝鏌熼褍鐏茬紒杈ㄧ箞閺屽洭鏁愰崟顓犳澖闁荤姳闄嶉崹钘壩i崟顖涘殜闁硅泛顫曢埀顒€锕︾槐鏃堝箣閻愬弬妤呮煛閸偄鐏﹂柛瀣墬缁傛帞鎹勯搹瑙勵啈闂佸搫瀚烽崹閬嶅磻瀹ュ鍎嶉柛鏇ㄥ墯娴犳ê霉閿濆棗鈻曢柍褜鍓氶弻銊ф閻愬鈻曢悗锝傛櫇椤忛亶鏌曢崱顓熷

    重磅专题
    往期文章
    最新文章