创建一个测试表
SQL> create table cache_chain (id_a varchar2(20), r_name varchar2(20));
Table created.

往表里插入10W条记录
begin
 for r in 1 .. 100000 loop
   insert into cache_chain values(r,'pl'||r);
  end loop;
  commit;
 end;
 /

看一下第1行的rowid 后面拿来验证是不是对的
SQL> select rowid,a.* from cache_chain a where a.id_a=1;

ROWID              ID_A                 R_NAME
------------------ -------------------- --------------------
AAAEMqAAEAAAAEGAAA 1                    pl1

AAAEMq 是数据对象编号
AAE是相关文件编号
AAAAEG是块编号
AAA 是行编号

使用dbms_rowid包找出 id_a=1 的那一行文件号 和块号
SQL> select id_a,r_name,dbms_rowid.rowid_relative_fno(rowid) file# ,
dbms_rowid.rowid_block_number(rowid) block#  from cache_chain where id_a=1;

ID_A                 R_NAME                    FILE#     BLOCK#
-------------------- -------------------- ---------- ----------
1                    pl1                           4        262

然后通过x$bh视图找出latch 
SQL> select  hladdr from x$bh where file#=4 and dbablk=262;
HLADDR
--------
4499C7F8
4499C7F8

查看我的数据库一把lacth锁 控制多少个 hash bucket (我这里是5个)
SQL> select  a.file# ,a.dbablk ,b.owner , a.obj ,b.object_name
from x$bh a ,dba_objects b
where hladdr='4499C7F8' and  a.obj=b.data_object_id;

FILE#     DBABLK OWNER             OBJ OBJECT_NAME
---------- ---------- ---------- ---------- --------------------
         1      20643 SYS               237 I_IDL_UB21
         1       3291 SYS               501 I_OID1
         2      19711 SYS              6205 WRH$_SQL_PLAN
         4        262 SCOTT           17194 CACHE_CHAIN
         4        262 SCOTT           17194 CACHE_CHAIN

转换成rowid

SQL> select dbms_rowid.rowid_create(1,17194,4,262,0) from dual; (1表示类型,对象号,文件号,块号,行号) orale里面0就是1

DBMS_ROWID.ROWID_C
------------------

AAAEMqAAEAAAAEGAAA

可以看到与上面的一模一样

往被一把latch锁控制的几个表狂插数据 查看是否会产生 cache buffer chain 等待事件验证是一个latch锁不能同时对多个hash bucket进行控制
declare
 r number;
begin
  for i in 1 .. 10000000 loop
   select count(*) into r from SYS.WRH$_SQL_PLAN where rowid='AAAEMqAAEAAAAEGAAA';
 end loop;
end;
/

declare
 vname varchar2(100);
begin
  for i in 1 .. 10000000 loop
   select  r_name into vname from SYS. I_IDL_UB21where rowid='AAAEiyAAFAAAAEvAAA';
 end loop;
end;
/

declare
 vname varchar2(100);
begin
  for i in 1 .. 10000000 loop
   select r_name into vname from SCOTT. CACHE_CHAIN where rowid='AAAEiyAAFAAAAEvAAA';
 end loop;
end;
/

使用下面的语句查看是否有 cache buffer chain 这个等待

select sid ,event,p1raw,p2raw from v$session where wait_class <> 'Idle' order by event;

oracle 查看latch锁控制多少个hash bucke 实验相关推荐

  1. Oracle 查看 SQL执行计划

    Oracle 查看 SQL执行计划 SQL性能分析 执行计划可以用来分析SQL的性能 一.查看执行计划的方法 1. 设置autotrace set autotrace off: 此为默认值,即关闭au ...

  2. Oracle查看SQL执行计划的方式

    Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: 1.通过sq ...

  3. 【转载】Oracle 查看执行计划

    来源url Oracle 查看执行计划 - 攻城猿的个人空间 - OSCHINA - 中文开源技术交流社区 一:什么是 Oracle 执行计划? 执行计划是一条查询语句在 Oracle 中的执行过程或 ...

  4. oracle 11g latch之v$latch系列三

    背景 本文为oracle 11g latch系列的第三篇文章,继续深入学习latch,想要熟悉其原理,还是先了解下相关视图的含义,尔后进一步深入其中, 便于解决问题.        本系列前2文链接如 ...

  5. oracle数据库latch,关于Oracle数据库latch: cache buffers chains等待事件

    关于Oracle数据库latch: cache buffers chains等待事件 latch: cache buffers chains等待事件的原理 当一个数据块读入到sga中时,该块的块头(b ...

  6. Oracle KSL Latch 管理层 与 Latch管理(未看)

    Oracle KSL Latch 管理层 与 Latch管理 1 作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道] 链接:http://ww ...

  7. Oracle查看执行计划的几种方法

    Oracle查看执行计划的几种方法 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRA ...

  8. oracle查看数据库字符编码,oracle 查看、批改字符集编码

    当前位置:我的异常网» 数据库 » oracle 查看.批改字符集编码 oracle 查看.批改字符集编码 www.myexceptions.net  网友分享于:2013-07-19  浏览:3次 ...

  9. oracle的系统和对象权限 与 Oracle 查看用户权限

    oracle的系统和对象权限 alter any cluster 修改任意簇的权限 alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter a ...

最新文章

  1. java 整合solr_SpringBoot整合Spring Data Solr
  2. mysql的条件替换_MySQLwhere条件替换疑问?
  3. 后台开发之IO缓冲区管理
  4. C#-CHTTPDownload
  5. 04.jQuery 基本语法笔记
  6. VS 2010 OpenGL 配置与实例开发
  7. oracle的空闲等待事件,Oracle 常见的33个等待事件详解
  8. springboot mysql事物_SpringBoot事务详细简介
  9. python数组和列表的区别_JS数组方法与python列表方法的比较
  10. C++求sinx的n阶积分从0-PI/2
  11. 既往不恋,当下不杂,未来不迎
  12. kubuntu我显示服务器,kubuntu 开启ssh 与加速连接速度
  13. linux系统带界面,linux系统界面详情介绍
  14. 电子邮箱大全,邮箱品牌种类大全,邮箱排行榜怎么样?
  15. antv L7地图 绘制大小不受控制bug
  16. '/0'和/0的区别
  17. 回首2019,瞻仰2020
  18. wordpress真正静态化插件really-static(纯静态html网页生成插件)
  19. 2017毕设论文小结
  20. nvme协议 sata接口_小Z聊固态:从NVMe协议聊聊SSD接口

热门文章

  1. 第四载、FAT12文件系统剖析2
  2. 高赋码——医疗器械UDI解决方案的专业之选
  3. PHP验证码--汉字,PHP验证码汉字校检
  4. Swift 3.0 打开手机手电筒
  5. 小米股价腰斩,雷军那么拼,资本市场为何不认可?
  6. 字符串数组char[]和字符串指针char*的讨论
  7. P1223 排队接水/1319:【例6.1】排队接水
  8. 解决openwrt页面升级中“不支持所上传的文件格式”问题
  9. 硬件开发基本知识(一):电容去耦、旁路、滤波的概念
  10. 解决新闻H5防盗链问题