网站首页 > 技术文章 正文
等待事件: buffer busy waits
此等待表示缓冲区缓存中有一些缓冲区,多个进程正试图同时访问这些缓冲区。查询V$WAITSTAT以获取每类缓冲区的等待统计信息。具有缓冲区忙等待的常见缓冲区类包括数据块、段头、撤消头和撤消块。检查以下V$SESSION_WAIT参数列:
P1: File ID
P2: Block ID
P3: Class ID
原因分析
要确定可能的原因,首先查询V$SESSION,以在会话等待缓冲区忙等待时识别ROW_WAIT_OBJ#的值。SQL查询如下:
SELECT row_wait_obj#
FROM V$SESSION
WHERE EVENT = 'buffer busy waits';
要识别争用的对象和对象类型,请使用从V$SESSION返回的ROW_WAIT_OBJ#的值查询DBA_OBJECTS。例如:
SELECT owner, object_name, subobject_name, object_type
FROM DBA_OBJECTS
WHERE data_object_id = &row_wait_obj;
问题解决
怎么解决取决于产生争用的块类别和实际段。
- Segment Header
如果争用在段头上,那么这很可能是空闲列表争用。在本地管理的表空间中自动管理段空间,无需指定PCTUSED、FREELISTS和FREELIST GROUPS参数。如果可能,请从手动空间管理切换到自动分段空间管理(ASSM)。
如果您无法使用ASSM(例如,因为表空间使用字典空间管理),以下信息需要了解:
- 空闲列表是空闲数据块的列表,通常包括段内多个不同扩展数据块中存在的块。
- 可用列表由可用空间尚未达到PCTFREE或已用空间已缩小到PCTUSED以下的块组成。
- 使用FREELISTS参数指定进程空闲列表的数量。
- FREELISTS的默认值为1。最大值取决于数据块的大小。
要查找该段的空闲列表的当前设置,请运行以下操作:
SELECT SEGMENT_NAME, FREELISTS
FROM DBA_SEGMENTS
WHERE SEGMENT_NAME = segment name
AND SEGMENT_TYPE = segment type;
设置空闲列表,或增加空闲列表的数量。如果添加更多的空闲列表并不能缓解问题,那么使用空闲列表组(即使在单个实例中,这也会有所不同)。如果使用Oracle RAC,请确保每个实例都有自己的空闲列表组。
- Data Block
如果争用发生在表或索引(而不是段标头)上:
- 检查右侧索引。这些是由许多进程在同一点插入的索引。例如,那些对键值使用序列号生成器的方法。
- 考虑使用ASSM、全局哈希分区索引或增加可用列表,以避免多个进程试图插入同一块。
- Undo Header
对于回滚段标头上的争用:如果您没有使用自动撤消管理,请添加更多回滚段。
- Undo Block
对于回滚段块上的争用:如果您没有使用自动撤消管理,那么可以考虑增大回滚段的大小。
猜你喜欢
- 2024-11-07 AWR基本操作 awr7
- 2024-11-07 ORA-19809: 超出了恢复文件数的限制故障处理实例
- 2024-11-07 Oracle Rman 不完全恢复实操讲解 oracle数据库不完全恢复
- 2024-11-07 Oracle 死锁与慢查询总结 oracle死锁产生原因
- 2024-11-07 Oracle 学习笔记之实例管理版本1.0
- 2024-11-07 ORACLE体系 - 4 oracle体系结构详解
- 2024-11-07 MySQL 序列使用最全介绍 mysql顺序号
你 发表评论:
欢迎- 617℃几个Oracle空值处理函数 oracle处理null值的函数
- 610℃Oracle分析函数之Lag和Lead()使用
- 599℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 595℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 591℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 582℃【数据统计分析】详解Oracle分组函数之CUBE
- 572℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)