Oracle X$BH
SYS用户可查询 buffer header数据,可以从数据库的数据字典表中查询得到,这张字典表就是x$bh,其中的bh就是指buffer headers,每个buffer在x$bh中都存在一条记录. buffer header中存储每个buffer容纳的数据块的文件号,块地址,状态等重要信息,根据这些信息,结合dba_extents视图,可以很容易地找到每个buffer对应的对象信息: x$bh中还有一个重要的字段TCH,TCH为Touch的缩写,表示一个Buffer的访问次数,buffer被访问的次数越多,说明该buffer就越抢手,也就可能存在热块竞争的问题 可以结合DUMP BH来对比X$BH中字段。
SQL> desc v$bh;
Name Type
-----------------------------
ADDR RAW(4) --Hex address of the Buffer Header.视图中某行的地址-缓冲区头的十六进制地址
INDX NUMBER --Buffer Header number
INST_ID NUMBER
HLADDR RAW(4) --即hash chain latch address可以和v$latch_children.addr关联,把latch和数据块关联起来
BLSIZ NUMBER --块大小
NXT_HASH RAW(4) --下一个BH的HASH值
PRV_HASH RAW(4) --前一个BH的HASH值
NXT_REPL RAW(4) --下一个BH的在LRU链上HASH值
PRV_REPL RAW(4) --前一个BH的在LRU链上HASH值
FLAG NUMBER ---块的状态,在BH中可能是buffer_dirty block_written_once redo_since_read,详见最后
FLAG2 NUMBER
LOBID NUMBER
RFLAG NUMBER
SFLAG NUMBER
LRU_FLAG NUMBER --- LRU_FLAG,详见最后
TS# NUMBER --tablespace number表空间号
FILE# NUMBER --块在数据库内绝对文件号
DBARFIL NUMBER --块的相对文件号
DBABLK NUMBER --块号--在数据文件上的
CLASS NUMBER --太长,见最下面。
STATE NUMBER --太长,见最下面。
MODE_HELD NUMBER --
CHANGES NUMBER
CSTATE NUMBER
LE_ADDR RAW(4) --Lock Element address (OPS)
DIRTY_QUEUE NUMBER --LRUW上的buffer
SET_DS RAW(4) -- Buffer cache set this buffer is under
OBJ NUMBER --对象号
BA RAW(4) --BUFFER ADDRESS--在内存中的地址
CR_SCN_BAS NUMBER --Consistent Read SCN base 一致读SCN低位
CR_SCN_WRP NUMBER --Consistent Read SCN wrap 一致读SCN高位
CR_XID_USN NUMBER -- CR XID Undo segment no
CR_XID_SLT NUMBER -- CR XID slot
CR_XID_SQN NUMBER --CR XID Sequence
CR_UBA_FIL NUMBER -- CR UBA file
CR_UBA_BLK NUMBER -- CR UBA Block
CR_UBA_SEQ NUMBER --CR UBA sequence
CR_UBA_REC NUMBER --CR UBA record
CR_SFL NUMBER --
CR_CLS_BAS NUMBER
CR_CLS_WRP NUMBER
LRBA_SEQ NUMBER --Lowest RBA needed to recover block in cache
LRBA_BNO NUMBER
HSCN_BAS NUMBER ---SCN的低位
HSCN_WRP NUMBER ---SCN的高位
HSUB_SCN NUMBER
US_NXT RAW(4)
US_PRV RAW(4)
WA_NXT RAW(4)
WA_PRV RAW(4)
OQ_NXT RAW(4) --- 对象队列前一个HASH值
OQ_PRV RAW(4) --- 对象队列后一个HASH值
AQ_NXT RAW(4) ---辅助对象队列前一个HASH值
AQ_PRV RAW(4) ---辅助对象队列后一个HASH值
OBJ_FLAG NUMBER
TCH NUMBER --Touch的缩写,表示一个Buffer的访问次数
TIM NUMBER --Touch Time
CR_RFCNT NUMBER
SHR_RFCNT NUMBER
bh即描述了数据块块头的信息,buffer header描述了数据块的信息.
下面查询可获得数据库最繁忙的Buffer
select * from (select addr,ts#,file#,dbarfil,dbablk,tch from x$bh order by tch desc) where rownum<11;
在结合dba_extents中的信息,可以查询得到这些热点Buffer都来自哪些对象:
select e.owner,e.segment_name,e.segment_type from dba_extents e,(select * from(select addr,ts#,file#,dbarfil,dbablk,tch from x$bh order by tch desc)
where rownum<11)b
where e.relative_fno=b.dbarfil
and e.block_id<=b.dbablk
and e.block_id+e.blocks>b.dbablk;
热点块与竞争的解决可以从v$latch_children中查询具体的子Latch信息
select * from(select addr,child#,gets,misses,sleeps,immediate_gets igets,immediate_misses imiss,spin_gets sgets
from v$latch_children
where name='cache buffers chains'
order by sleeps desc)
where rownum<11;
X$BH中还存在另外一个关键字段HLADDR,即Hash Chain Latch Address,这个字段可以和v$latch_child.addr进行连接,这样就可以把具体的Latch竞争和数据块关联起来,在结合dba_extents视图,就可以找到具体的热点竞争对象,找到具体热点竞争对象之后,可以结合v$sqlarea或者v$sqltext,找到频繁操作这些对象的SQL,然后对其进行优化,即可缓解或解决热点块竞争的问题。
可以通过如下查询获取当前持有最热点数据块的Latch及Buffer信息:
select b.addr,a.ts#,a.dbarfil,a.tch,b.gets,b.misses,b.sleeps from
(select * from (
select addr,ts#,file#,dbarfil,dbablk,tch,hladdr from x$bh order by
tch desc) where rownum<11) a,
(select addr,gets,misses,sleeps from v$latch_children where
name='cache buffers chains')b
where a.hladdr=b.addr
根据如下的sql找到这些热点buffer的对象的信息
select e.owner,e.segment_name,e.segment_type from dba_extents e,
(select * from (select addr,ts#,file#,dbarfil,dbablk,tch from x$bh
order by tch desc)
where rownum<11) b
where e.relative_fno=b.dbarfil and e.block_id<=b.dbablk
and e.block_id+e.blocks>b.dbablk;
结合v$sqltext或v$sqlarea,可以找到操作这些对象的相关SQL,继续查询:
找到sql之后,就可以通过优化SQL减少数据的访问。
break on hash_value skip 1;
select hash_value,sql_text from v$sqltext
where (hash_value,address) in (
select a.hash_value,a.address from v$sqltext a,
(select distinct a.owner,a.segment_name,a.segment_type
from dba_extents a,
(select dbarfil,dbablk from (
select dbarfil,dbablk from x$bh order by tch desc)
where rownum<11) b
where a.relative_fno=b.dbarfil
and a.block_id<=b.dbablk
and a.block_id+a.blocks>b.dbablk) b
where a.sql_text like '%'||b.segment_name||'%' and b.segment_type='TABLE'
)order by hash_value,address,piece;
对latch导致的热快争用解决请参考我另外一篇博客:Oracle latch: cache buffers chains
Oracle X$BH相关推荐
- Oracle latch: cache buffers chains
buffer cache深度分析之buffer cache的优化 buffer cache的等待事件 与buffer cache相关的等待事件包括:latch free.buffer busy ...
- 1.oracle的dump理解一 BH buffer header
1.oracle的dump理解一 BH buffer header 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/5122844 ...
- oracle v¥bh,【oracle笔记2】约束
约束 *约束是添加在列上的,用来约束列的. 1. 主键约束(唯一标识) ***非空*** ***唯一*** ***被引用***(外键时引用主键) *当表的某一列被指定为主键后,该列就不能为空,不能有重 ...
- oracle v¥bh,ORACLE数据库sql语言、函数及常用命令
file=c:\database\ydxt200108170926.dmp log=c:\database\ydxt200108170926.log fromuser=cur touser=cur1 ...
- Oracle常用傻瓜问题1000问
1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_tem ...
- Oracle語句大全
1. Oracle安装完成后的初始口令? internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_tem ...
- imu oracle,问一个关于IMU REDO的问题~
> Private strand的redo allocation latch 和Shared strand的redo allocation latch是不一样的latch么 I'd love t ...
- oracle 条件动态视图,oracle最重要的9个动态性能视图
oracle最重要的9个动态性能视图 v$session v$session_wait (在10g里功能被整合,凑合算1个吧.) v$process v$sql v$sqltext v$bh (更宁愿 ...
- oracle主备库sync模式,Oracle 探索DG备库undo工作模式
模拟备库出现 ORA-01555 分析备库 undo 工作模式 一: 修改主库 备库 undo 表空间 1.在主库创建undo表空间(会自动同步到备库) SYS@prod>create undo ...
最新文章
- SQL标准结构化语言练习,SQL增删查改,SQL实现对bank数据的操作
- java lo流_javaIO:字节流
- Codeforces 337D Book of Evil:树的直径【结论】
- Docker 安装私有镜像库的简单使用
- 判断N!阶乘中末尾0的个数
- 学霸孩子必备的三种思维,编程思维的速成方法
- 2022-2028年中国医疗美容行业发展前景预测与投资战略分析报告
- Maven内置属性及使用
- linux redis客户端,Redisson 3.4.0和2.9.0发布,Redis客户端
- 项目常用工具类整理(二)--ckeditor的引用
- SpringMVC创建用户信息(一)
- PTA Python程序设计-01
- java咖啡杯_一次性咖啡杯的简史
- operating system not found的问题的解决办法 ---设置活动分区
- java后台amr格式转mp3格式方法
- 随机迷宫生成算法整理分析
- freeswitch命令一览表
- nginx location 限制ip或ip段访问
- 拓扑序列(拓扑排序)
- 汉字Unicode编码
热门文章
- mysql字段是问号_Mysql数据库中文字段显示问号怎么解决?
- One-Way Streets (oneway)
- Chrome播放视频时只有声音没有画面
- java 发卡平台支付_ZFAKA一款免费开源的发卡系统搭建教程 (支持多种支付接口)...
- 史玉柱的团队管理之道
- Chrome(谷歌浏览器) 程序开发32个经常使用插件
- linux桌面支持hdpi,用于HiDPI显示器的最佳Linux桌面环境 | MOS86
- SQL Server基础操作(此随笔仅作为本人学习进度记录三)
- Xmanager 5 远程连接linux图形界面
- 【最新版】宝塔面板7.9.3企业版 开心破解版一键脚本