作者:david_zhang@sh 【转载时请以超链接形式标明文章】

链接:http://www.cnblogs.com/david-zhang-index/p/3873357.html

【测试1】低效的SQL引起的catch buffers chains 锁存器争用

创建测试表

  1. create table cbc_test(id number,name char(100));
  2. insert into cbc_test(id,name) select rownum,object_name from dba_objects;

创建索引

  1. create index cbc_test_idx on cbc_test(id);

创建扫描表的procedure

  1. create or replace procedure cbc_do_select
    2 is
  2. 3 begin
  3. 4 for x in (select /*+ INDEX(cbc_test cbc_test_idx)*/ * from cbc_test where id >= 0) loop
  4. 5 null;
  5. 6 end loop;
  6. 7 end;
  7. 8 /

同时打开2000个会话执行读取工作

  1. var job_no number;
  2. begin
  3. for idx in 1..2000 loop
  4. dbms_job.submit(:job_no,'cbc_do_select;');
  5. commit;
  6. end loop;
  7. end;
  8. /

查看整个系统当前等待

  1. SELECT event,
  2. total_waits ,
  3. time_waited
  4. FROM v$session_event
  5. WHERE sid=
  6. (SELECT sid FROM v$mystat WHERE rownum=1
  7. )
  8. ORDER BY 3 DESC;

结果如下:

  1. EVENT TOTAL_WAITS TIME_WAITED
  2. ------------------------------ ----------- -----------
  3. SQL*Net message from client 44 46352
  4. library cache lock 202 253
  5. buffer busy waits 56 113
  6. latch: In memory undo latch 43 86
  7. latch: cache buffers chains 33 55
  8. control file sequential read 14154 22
  9. db file sequential read 82 18
  10. events in waitclass Other 6 11
  11. library cache: mutex X 8 10
  12. latch: shared pool 4 5
  13. latch: row cache objects 1 2
  14. SQL*Net message to client 45 0
  15. Disk file operations I/O 4 0
  16. SQL*Net break/reset to client 1 0
  17. log file sync 1 0

根据cache buffers chains事件,找出对应的latch地址

  1. select addr, gets, misses, sleeps
  2. from v$latch_children
  3. where name = 'cache buffers chains'
  4. and misses > 100000
  5. order by 3 desc;

结果:

  1. ADDR GETS MISSES SLEEPS
  2. ---------------- ---------- ---------- ----------
  3. 0000000124ECCBB0 10485987 5260833 0
  4. 0000000124E2B5A8 20671341 9806756 27942

根据ADDR找出关联的文件号和块号

  1. SQL> select FILE#,DBABLK,CLASS,STATE from x$bh where HLADDR='0000000124E2B5A8';
  2.  
  3. FILE# DBABLK CLASS STATE
  4. ---------- ---------- ---------- ----------
  5. 4 3585766 1 1
  6. 3 9411 20 1
  7. 4 3651302 1 1
  8. 4 3581428 1 1
  9. 6 71918 1 1
  10. 6 71918 1 3
  11. 6 71918 1 3
  12. 6 71918 1 3
  13. 6 71918 1 3
  14. 6 71918 1 3
  15. 3 5073 38 0

根据文件号和块号,找出对象名称,输入6和71918

  1. select owner, segment_name
  2. from dba_extents
  3. where file_id = &p1
  4. and &p2 between block_id and block_id + blocks - 1;

找出的对象名称

  1. OWNER SEGMENT_NAME
  2. ------------------------------ ------------------------------
  3. SCOTT EMP_FP_IDX1

待续。。。

【原】Cache Buffer Chain 第四篇的更多相关文章

  1. 【转】Cache Buffer Chain 第三篇

    文章转自:http://oracle.chinaitlab.com/induction/862509.html,文章前部分转载,后部分自己加上的. Oracle数据库只读模式的CACHE BUFFER ...

  2. 【转】cache buffer chain 第一篇

    文章转自:http://www.jydba.net/cache-buffer-chain/ buffer cache的管理有两个重要的数据结构: hash bucket和cache buffer ch ...

  3. 【转】Cache Buffer Chain 第二篇

    文章转自:http://m.bianceng.cn/database/Oracle/201407/42884.htm 测试环境:版本11gR2 SQL> select * from v$vers ...

  4. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  5. lnux内核的malloc实现(Oracle的cache buffer影子)

    lnux内核的malloc实现(Oracle的cache buffer影子) 本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/artic ...

  6. (转载) 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    这一篇是从0开始搭建SQL Server AlwaysOn 的第四篇,这一篇开始搭建异地机房节点 注意点1 注意异地节点最好至少有2个AG节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示 ...

  7. 第四篇 Entity Framework Plus 之 Batch Operations

    用 Entity Framework  进行 增,删,改.都是基于Model进行的,且Model都是有状态追踪的.这样Entity Framework才能正常增,删,改. 有时候,要根据某个字段,批量 ...

  8. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

随机推荐

  1. mysql复制表命令

    http://hi.baidu.com/dwspider/item/908bf5e1746275bd2e140b03     上面命令是实现复制表的一种方法,缺陷就是索引等表信息不会复制过去,只是复制 ...

  2. php接收post过来的 json数据 例子

    html代码 <html> <head> <title>json</title> <script src="//cdn.bootcss. ...

  3. mongoDB之监控工具mongotop

    mongotop也是mongodb-win32-x86_64-2.2.1\bin下的一个内置工具,mongotop提供了一个方法,用来跟踪一个MongoDB的实例,查看哪些大量的时间花费在读取和写入数 ...

  4. “ 不确定 "限制值的使用

    前言 前篇文章解释了限制值的五种类型以及获取它们的方法.但是对于其中可能不确定的类型( 45类型 ),当限制值获取函数返回-1的时候,我们无法仅通过这个函数返回值-1来判断是限制值获取失败还是限制值是 ...

  5. apktool + eclipse 动态调试APK

    用了会AndBug,尽管挺强大的可是作为习惯了OD.EDB作为动态调试工具的人,自然有些不习惯,于是乎寻求新的动态调试解决方式.但大多数都是NetBeans + apktool.想着还得多下一个IDE ...

  6. 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案

    一.方案介绍 1.1.方案背景 在2016年10月25日至28日的安博会上,我们看到了不少的幼教平台厂商,我们注意到大部分的幼教平台,为了追求极佳的用户体验,在微信或者APP端能够做到极快的打开速度, ...

  7. Struts2中的OGNL表达式

    一.OGNL表达式简介 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.所谓对象图,即以任意一个对象为根,通过OGNL可以访问 ...

  8. java的一个简单死锁的例子

    package com.deadlock; /* * 演示死锁:(由毕向东视频所得) * 一种解释:Thread—0拿到lock1锁,Thread—1拿到lock2锁,Thread—0想要lock2锁 ...

  9. git (转载)

    文章转载 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的 ...

  10. Safair 浏览器cllick事件不生效或者需要双击才生效

    针对Safair 浏览器cllick事件不生效或者需要双击才生效的解决方案. 方法一:给元素加上cursor: pointer样式.(不生效) 方法二:ios事件机制不一样,将click事件改为mou ...