题目部分
在Oracle中,什么是热块?
♣
答案部分
当一个会话需要访问一个数据块,而这个数据块正在被另一个用户从磁盘读取到内存中或者这个数据块正在被另一个会话修改时,当前的会话就需要等待,就会产生一个buffer busy waits等待,也伴随着Latch争用。如果太多的会话去访问相同的数据块,那么会导致长时间的buffer busy waits等待,通常表现形式为CPU使用率很高,但吞吐量很低。造成热块的原因可能是数据库设置或者重复执行的SQL语句频繁访问一些相同的数据块。热块产生的原因不尽相同,按照数据块的类型,可以分成表数据块、索引数据块、索引根数据块、文件头数据块和数据块自身的争用,不同热块类型处理的方式是不同的。下面给出找到热块的SQL语句:
SELECT _NAME,
SUB _NAME
FROM DBA_ S
WHERE DATA_ _ID IN
(SELECT DATA_ _ID
FROM (SELECT OBJ DATA_ _ID,
FILE#,
DBABLK,
CLASS,
STATE,
TCH
FROM x$bh
WHERE HLADDR IN (SELECT ADDR
FROM (SELECT ADDR
FROM V$LATCH_CHILDREN
ORDER BY (GETS + MISSES + SLEEPS) DESC)
WHERE ROWNUM < 10)
ORDER BY TCH DESC)
WHERE ROWNUM < 10);
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
继续阅读与本文标签相同的文章
-
爬了下抖音上的高颜值小姐姐
2026-05-21栏目: 教程
-
Jenkins CLI 命令行 v0.0.22
2026-05-21栏目: 教程
-
【DB笔试面试673】在Oracle中,如何dump数据库内部结构?
2026-05-21栏目: 教程
-
持续交付:云原生应用的“十二要素”
2026-05-21栏目: 教程
-
【DB笔试面试674】在Oracle中,V$SESSION_LONGOPS视图的作用是什么?
2026-05-21栏目: 教程
