科技行者

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

知识库

知识库 安全导航

至顶网软件频道诊断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#;

 

查看本文来源

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

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

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