Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

19

积分

0

好友

0

主题
1#
发表于 2012-3-31 12:32:36 | 查看: 5987| 回复: 5
如何转换cache buffer chains的addr的问题9i的环境,发生了较严重的latch free等待,通过v$session_wait查的p2关联v$latch查看到是cache buffer chains, 但是p1列显示值:1.3835E+19,如下:
SID       SEQ#    EVENT                                                            P1TEXT                                                                   P1 P1RAW            P2TEXT                                                                   P2 P2RAW            P3TEXT                                                                   P3 P3RAW             WAIT_TIME SECONDS_IN_WAIT      STATE
------ ---------- ---------------------------------------------------------------- ---------------------------------------------------------------- ---------- ---------------- ---------------------------------------------------------------- ---------- ---------------- ---------------------------------------------------------------- ---------- ---------------- ---------- ---------------  -------------------
   183        438 latch free                                                       address                                                          1.3835E+19 C0000000771DA3B0 number                                                                   98 0000000000000062 tries                                                                     0 00                        1               2   WAITED KNOWN TIME

怎么将1.3835E+19 转换成正常的latch address呢? 那样才可以找到对于哪个对象的block发生了cache buffer chains等待!
2#
发表于 2012-3-31 13:51:32
v$latchholder
x$bh
通过这个两个查查看。

回复 只看该作者 道具 举报

3#
发表于 2012-3-31 15:19:03
好的  我来试下! 因为看到v$session_wait的p1列应该是latch的address,我想通过这个latch address去看看是几号cache buffer chains的

回复 只看该作者 道具 举报

4#
发表于 2012-3-31 17:39:52
你找cache buffer chains也是为了找到latch的sql和object_name啊。。

v$session_wait.addr=x$bh.hladdr这样子就好了啊 。

回复 只看该作者 道具 举报

5#
发表于 2012-3-31 19:56:46
好的   谢谢啊

回复 只看该作者 道具 举报

6#
发表于 2012-3-31 21:06:22
X$BH ==> HLADDR      RAW(4) Hash Chain Latch Address

SQL> select name,parameter1,parameter2,parameter3 from v$event_name where name = 'latch: cache buffers chains';

NAME                                                             PARAMETER1                                                       PARAMETER2
---------------------------------------------------------------- ---------------------------------------------------------------- ----------------------------------------------------------------
PARAMETER3
----------------------------------------------------------------
latch: cache buffers chains                                      address                                                          number
tries

latch: cache buffers chains     

p1 the address of the latch for the cbc latch wait.


    select
        count(*),
        lpad(replace(to_char(p1,'XXXXXXXXX'),' ','0'),16,0) laddr
    from v$active_session_history
    where event='latch: cache buffers chains'
    group by p1
    order by count(*);   

    COUNT(*)  LADDR
    ---------- ----------------
          4933 00000004D8108330   


    select o.name, bh.dbarfil, bh.dbablk, bh.tch
    from x$bh bh, obj$ o
    where tch > 5
      and hladdr='00000004D8108330'
      and o.obj#=bh.obj
    order by tch


    NAME        DBARFIL DBABLK  TCH
    ----------- ------- ------ ----
    EMP_CLUSTER       4    394  120      



可以使用    lpad(replace(to_char(p1,'XXXXXXXXX'),' ','0'),16,0) laddr 来转换p1 为16进制 地址

或者直接使用 V$SESSION的 P1RAW

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-24 03:29 , Processed in 0.047342 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569