定位热链的方法

declare
        v_num number;
begin
        for i in
1..1000000
        loop
                select sal into
v_num
                from emp
                where
ename='SMITH';
        end loop;
end;
/

declare
        v_num number;
begin
        for i in
1..1000000
        loop
                select sal into
v_num
                from emp
                where
ename='KING';
        end loop;
end;
/

declare
        v_num number;
begin
        for i in
1..1000000
        loop
                select sal into
v_num
                from emp
                where
ename='SCOTT';
        end loop;
end;
/

一.获取当前系统等待事件
select event, count(*) from v$session
where wait_class
<> 'Idle' group by event order by 2;

EVENT           
COUNT(*)
----------------------------------------------------------
----------
SQL*Net message to client         1
latch: cache buffers
chains         1

SYS@ora10g>

二.获取哪些活跃会话正在处于latch: cache buffers chains
select
sid,username,event,p1raw,sql_id,logon_time,last_call_et
from v$session where
event='latch: cache buffers chains' and status='ACTIVE'
SYS@ora10g> /

SID USERNAME      EVENT       P1RAW      SQL_ID  LOGON_TIM
LAST_CALL_ET
----------- ---------------- ------------------------------
------------------------------ ------------- --------- ------------
 138
SCOTT      latch: cache buffers chains    0000000082FED878     766dr19szth9c
07-OCT-14      18
 140 SCOTT      latch: cache buffers chains   
0000000082E3FCC0     5mmqfh10738vp 07-OCT-14      15

SYS@ora10g>

三.确认等待的P1RAW是否出现很多是相同的.
SYS@ora10g>
l
  1  select sid,p1raw,p2,p3,seconds_in_wait,wait_time,state from
v$session_wait
  2* where event='latch: cache buffers chains' order by
3,2
SYS@ora10g> /

SID P1RAW       P2  P3 SECONDS_IN_WAIT  WAIT_TIME STATE
-----------
---------------- ---------- ---------- --------------- ----------
-------------------
 140 0000000082E3FCC0     122   1  15    10 WAITED KNOWN
TIME
 138 0000000082E3FCC0     122   0   3    -1 WAITED SHORT TIME

SYS@ora10g>

四.找出这个latch管理的对象.
 关注TCH值
SYS@ora10g> undefine latch_addr
SYS@ora10g> l
    select
a.hladdr,a.file#,a.dbablk,a.tch,a.obj,b.object_name from x$bh a, dba_objects
b
    where (a.obj = b.object_id or a.obj = b.data_object_id) and a.hladdr =
'&&latch_addr'
    union select hladdr,file#,dbablk,tch,obj,null from
x$bh
   where obj in (select obj from x$bh where hladdr = '&latch_addr'

   minus select object_id from dba_objects
   minus select
data_object_id from dba_objects) and hladdr = '&latch_addr' order by 4
SYS@ora10g> /
Enter value for latch_addr:
0000000082E3FCC0

HLADDR        FILE# DBABLK       TCH  OBJ OBJECT_NAME
----------------
---------- ---------- ---------- ----------
------------------------------
0000000082E3FCC0   1  55349  0   92
DEPENDENCY$
0000000082E3FCC0   2   1662  1 4294967295
0000000082E3FCC0  
3    963  1 3709 WRI$_ADV_RATIONALE_PK
0000000082E3FCC0   3  
4835  1 9246
0000000082E3FCC0   3   5068  1      51296
ORDER_ITEMS
0000000082E3FCC0   3   5068  1      51296
WRH$_PARAMETER
0000000082E3FCC0   4  17383  1      52516
O1
0000000082E3FCC0   4  39306  1      52516 O1
0000000082E3FCC0   4 
60530  1      52516 O1
0000000082E3FCC0   4  60763  1      52516
O1
0000000082E3FCC0   4  60996  1      52516 O1
0000000082E3FCC0   4 
61229  1      52516 O1
0000000082E3FCC0   4  64868  1      52516
O1
0000000082E3FCC0   4  65101  1      52516 O1
0000000082E3FCC0   4 
65334  1      52516 O1
0000000082E3FCC0   4  65567  1      52516
O1
0000000082E3FCC0   4  69206  1      52516 O1
0000000082E3FCC0   4 
69439  1      52516 O1
0000000082E3FCC0   4  69672  1      52516
O1
0000000082E3FCC0   4  69905  1      52516 O1
0000000082E3FCC0   4 
70138  1      52516 O1
0000000082E3FCC0   3  23119        39      49873
SYS_IOT_OVER_49872
0000000082E3FCC0   4     31       411      51151 EMP

23 rows selected.

SYS@ora10g>

五.根据sql_id获取到相应SQL.结合SQL中的对象.结合上面的TCH值进一步判断热块.
SYS@ora10g> select executions,sql_text from
v$sqlarea where sql_id in ('766dr19szth9c','5mmqfh10738vp');

EXECUTIONS SQL_TEXT
----------
------------------------------------------------------------
   7000000
SELECT SAL FROM EMP WHERE ENAME='KING'
  45374216 SELECT SAL FROM EMP WHERE
ENAME='SCOTT'

SYS@ora10g>

六.复杂SQL,太多表关联,要依据执行计划来判断.

定位热块的方法

 

latch: buffer busy waits    等待事件
 原因:
  热块 修改导致

declare
        v_num number;
begin
   for i in 1..1000000
 
 loop
    select sal into v_num
    from emp
    where
ename='SMITH';
      update emp set sal=sal+0
     where
ename='SMITH';
     commit;
   end loop;
end;
/

declare
        v_num number;
begin
   for i in 1..1000000
 
 loop
    select sal into v_num
    from emp
    where
ename='KING';
      update emp set sal=sal+0
     where
ename='KING';
     commit;
   end loop;
end;
/

declare
        v_num number;
begin
   for i in 1..1000000
 
 loop
    select sal into v_num
    from emp
    where
ename='SCOTT';
      update emp set sal=sal+0
     where
ename='SCOTT';
     commit;
   end loop;
end;
/

SYS@ora10g> select event, count(*)
from v$session where wait_class <> 'Idle' group by event order by 2;
SYS@ora10g> /

EVENT           
COUNT(*)
----------------------------------------------------------
----------
log file switch (checkpoint incomplete)        1
SQL*Net
message to client         1
buffer busy waits          2

SYS@ora10g>

SYS@ora10g> select
sid,username,event,p1,p2,p3,sql_id,logon_time,last_call_et
   from v$session
where event='buffer busy waits' and status='ACTIVE'

SYS@ora10g> /

SID USERNAME      EVENT        P1        P2   P3 SQL_ID    LOGON_TIM
LAST_CALL_ET
----------- ---------------- ------------------------------
---------- ---------- ---------- ------------- --------- ------------
 138
SCOTT      buffer busy waits        4        32    1 dh3kc1jqtnxw5
07-OCT-14       249
 140 SCOTT      buffer busy waits        4        32    1
71ssxfx45kyrh 07-OCT-14       246
 158 SCOTT      buffer busy waits       
4        32    1 5vcss49awm6fn 07-OCT-14       252

SYS@ora10g>

SELECT  owner , segment_name , segment_type
    FROM 
dba_extents
    WHERE  file_id = &FileNumber
   AND  &BlockNumber
BETWEEN block_id AND block_id + blocks -1
SYS@ora10g> /
Enter value for filenumber:
4
old   3: WHERE file_id = &FileNumber
new   3: WHERE file_id =
4
Enter value for blocknumber: 32
old   4: AND  &BlockNumber BETWEEN
block_id AND block_id + blocks -1
new   4: AND  32 BETWEEN block_id AND
block_id + blocks -1

OWNER      SEGMENT_NAME        SEGMENT_TYPE
------------
------------------------- ------------------
SCOTT      EMP         TABLE

SYS@ora10g>

SYS_S:191_P:5773_ora11g> select * from v$waitstat order by 1;

CLASS   COUNT     TIME
------------------ ---------- ----------
1st
level bmb      0        0
2nd level bmb      0        0
3rd level bmb     
0        0
bitmap block      0        0
bitmap index block     0       
0
data block      0        0
extent map      0        0
file header
block    60      240
free list      0        0
save undo block     
0        0
save undo header     0        0
segment header      0       
0
sort block      0        0
system undo block     0        0
system
undo header     0        0
undo block      0        0
undo header     
1        0
unused       0        0

18 rows selected.

oracle 定位热块和热链的方法的更多相关文章

  1. 读取模式下cbc latch的事件模拟(热块竞争和热链竞争)-P62

    文章目录 1. 背景 2. 过程 2.1 热块竞争 2.1.1 版本11.2.0.1.0 2.1.1.1 session 1(sid:34) 2.1.1.2 session 2(sid:35) 2.1 ...

  2. cache buffers chains以及热块解决方案

    cache buffers chains以及热块解决方案 今天是2013-10-10,今天下午我调休了,中午饭过后从14点一直睡到16点,这种感觉真爽.  之前学习过关于buffer cache的ca ...

  3. 消除热块(hot block)

    上篇日志提到了,那么高的负载,是存在数据块读竞争,下面介绍几个方法来消除块竟争 查找块竟争 SELECT p1 "file#", p2 "block#", p3 ...

  4. 12 oracle 数据库坏块--物理坏块-ORA-01578/ORA-01110

    oracle 数据库坏块--物理坏块 数据坏块的类型物理坏块:通常是由于硬件损坏如磁盘异常导致.内存有问题.存储链有问题. IO有问题.文件系统有问题. Oracle本身的问题等逻辑坏块:可能都是软件 ...

  5. Oracle数据库坏块的恢复

    模拟数据块坏块: 对于发生数据块不一致的数据块,如果当前数据库有备份且处于归档模式,那么就可以利用rman工具数据块恢复功能 对数据块进行恢复,这种方法最简单有效,而且可以在数据文件在线时进行,不会发 ...

  6. 使用BBED模拟Oracle数据库坏块

    BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢 ...

  7. 对Oracle数据库坏块的理解

    1.物理坏块和逻辑坏块 在数据库中有一个概念叫做数据块的一致性,Oracle的数据块的一致性包括了两个层次:物理一致性和逻辑一致性,如果一个数据块在这两个层次上存在不一致性,那就对应到了我们今天要要说 ...

  8. 【Quick 3.3】资源脚本加密及热更新(三)热更新模块

    [Quick 3.3]资源脚本加密及热更新(三)热更新模块 注:本文基于Quick-cocos2dx-3.3版本编写 一.介绍 lua相对于c++开发的优点之一是代码可以在运行的时候才加载,基于此我们 ...

  9. java的热部署和热加载

    ps:热部署和热加载其实是两个类似但不同的概念,之前理解不深,so,这篇文章重构了下. 一.热部署与热加载 在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载. 对于Java应用程序来说 ...

随机推荐

  1. Eclipse无法识别Android真机的解决方法

    使用IORegistryExplorer(在Developer Tool)可以查看连接上的USB设备的信息.选择IOUSB,可以看到名为连线的安卓设备,比如小米idVendor是0x2717. ech ...

  2. HDOJ/HDU 1075 What Are You Talking About(字符串查找翻译~Map)

    Problem Description Ignatius is so lucky that he met a Martian yesterday. But he didn't know the lan ...

  3. C语言中的宏

    写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_ ...

  4. 鸟哥的Linux私房菜 第十八章、认识系统服务 (daemons)

    什么是 daemon 与服务 (service) Linux Daemon (守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些事件.它不需要用户输入就能运行 ...

  5. POJ 1325、ZOJ 1364、HDU 1150 Machine Schedule - from lanshui_Yang

    Problem Description As we all know, machine scheduling is a very classical problem in computer scien ...

  6. linux内核--软中断与tasklet

    硬件中断通常都需要在最短的时间内执行完毕,如果将所有硬件中断相关的处理都放在硬件中断处理程序中,那么就达不到这个目的. 通过linux提供的软中断和tasklet,可以将硬件中断处理程序中可以延迟处理 ...

  7. 【原创】javascript——prototype与__proto__

    一定要注意这个概念:javascript世界里,万物皆对象, function是对象,prototyp也是对象.   新建构造函数,并实例 var Person = function(){} var ...

  8. [TypeScript] Using Lodash in TypeScript with Typings and SystemJS

    One of the most confusing parts of getting started with TypeScript is figuring out how to use all th ...

  9. JAVA中toString方法的作用(转)

    因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...

  10. mvvm框架下页面与ViewModel的各种参数传递方式

    传单个参数的话在xaml用     Command={Binding ViewModel的事件处理名称}    CommandParameter={Binding 要传递的控件名称} ViewMode ...