oracle 查看latch锁控制多少个hash bucke 实验
创建一个测试表
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 实验相关推荐
- Oracle 查看 SQL执行计划
Oracle 查看 SQL执行计划 SQL性能分析 执行计划可以用来分析SQL的性能 一.查看执行计划的方法 1. 设置autotrace set autotrace off: 此为默认值,即关闭au ...
- Oracle查看SQL执行计划的方式
Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: 1.通过sq ...
- 【转载】Oracle 查看执行计划
来源url Oracle 查看执行计划 - 攻城猿的个人空间 - OSCHINA - 中文开源技术交流社区 一:什么是 Oracle 执行计划? 执行计划是一条查询语句在 Oracle 中的执行过程或 ...
- oracle 11g latch之v$latch系列三
背景 本文为oracle 11g latch系列的第三篇文章,继续深入学习latch,想要熟悉其原理,还是先了解下相关视图的含义,尔后进一步深入其中, 便于解决问题. 本系列前2文链接如 ...
- oracle数据库latch,关于Oracle数据库latch: cache buffers chains等待事件
关于Oracle数据库latch: cache buffers chains等待事件 latch: cache buffers chains等待事件的原理 当一个数据块读入到sga中时,该块的块头(b ...
- Oracle KSL Latch 管理层 与 Latch管理(未看)
Oracle KSL Latch 管理层 与 Latch管理 1 作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道] 链接:http://ww ...
- Oracle查看执行计划的几种方法
Oracle查看执行计划的几种方法 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRA ...
- oracle查看数据库字符编码,oracle 查看、批改字符集编码
当前位置:我的异常网» 数据库 » oracle 查看.批改字符集编码 oracle 查看.批改字符集编码 www.myexceptions.net 网友分享于:2013-07-19 浏览:3次 ...
- oracle的系统和对象权限 与 Oracle 查看用户权限
oracle的系统和对象权限 alter any cluster 修改任意簇的权限 alter any index 修改任意索引的权限 alter any role 修改任意角色的权限 alter a ...
最新文章
- java 整合solr_SpringBoot整合Spring Data Solr
- mysql的条件替换_MySQLwhere条件替换疑问?
- 后台开发之IO缓冲区管理
- C#-CHTTPDownload
- 04.jQuery 基本语法笔记
- VS 2010 OpenGL 配置与实例开发
- oracle的空闲等待事件,Oracle 常见的33个等待事件详解
- springboot mysql事物_SpringBoot事务详细简介
- python数组和列表的区别_JS数组方法与python列表方法的比较
- C++求sinx的n阶积分从0-PI/2
- 既往不恋,当下不杂,未来不迎
- kubuntu我显示服务器,kubuntu 开启ssh 与加速连接速度
- linux系统带界面,linux系统界面详情介绍
- 电子邮箱大全,邮箱品牌种类大全,邮箱排行榜怎么样?
- antv L7地图 绘制大小不受控制bug
- '/0'和/0的区别
- 回首2019,瞻仰2020
- wordpress真正静态化插件really-static(纯静态html网页生成插件)
- 2017毕设论文小结
- nvme协议 sata接口_小Z聊固态:从NVMe协议聊聊SSD接口