定位热链的方法

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. xPath Helper

    整个抓取使用了 xpath.正则表达式.消息中间件.多线程调度框架(参考).xpath 是一种结构化网页元素选择器,支持列表和单节点数据获取,他的好处可以支持规整网页数据抓取.我们使用的是google ...

  2. python 零散记录(一) input与raw_input 数学相关函数 转换字符串的方法

    input()与raw_input(): 两者都是接受命令行输入,但区别在于,raw_input()接受原始数据(raw data). #使用input()来提示输入名字 input("en ...

  3. Linux学习笔记32——select()函数分析【转】

    Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect.accept.recv或recvfrom这样的阻塞程序 ...

  4. JAVA vo pojo javabean dto的区别

    JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性 ...

  5. linux 多线程基础4

    六.线程的作用域 函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下: 7. 名称:: pthread_at ...

  6. B树,B-树,B+树,B*树

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...

  7. bash shell——与if条件相关的参数意义

    最近编写脚本,常看到有 if [ -x $variable ] 类的条件语句,不知道相应参数的意义到底是什么, 特摘录如下:from   http://blog.csdn.net/aaaaatiger ...

  8. 为什么String要设计成不可变的?

    英文原:http://www.programcreek.com/2013/04/why-string-is-immutable-in-java/ 转自:http://blog.csdn.net/ren ...

  9. (5/18)重学Standford_iOS7开发_视图控制器生命周期_课程笔记

    第五课: 1.UITextView @property (nonatomic, readonly) NSTextStorage *textStorage;//注意为只读属性,因此不能直接更改内容,NS ...

  10. 在C#中用Linq从属性文件中读取键值对Key-Value Pair

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在C#中用Linq从属性文件中读取键值对Key-Value Pair.