ITPub博客

首页 > 数据库 > Oracle > Oracle数据库 Truncate慢分析

Oracle数据库 Truncate慢分析

原创 Oracle 作者:sjw1933 时间:2024-11-19 15:08:52 0 删除 编辑

作者:Digital Observer(施嘉伟)
Oracle  ACE Pro: Database
PostgreSQL  ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle  OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、 PGCM、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、青学会MOP技术社区专家顾问、国内某高校企业实践指导教师
公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;墨天轮:Digital Observer;PGFans:施嘉伟。

背景

收到客户oracle库在做truncate table卡住,从11点55分钟开始接近30分钟未执行完,该问题原来发生过,排查到是bug原因造成,并且已经打过补丁。

环境

硬件平台 & 操作系统 Linux x86 64-bit
操作系统版本
内存 126G
Oracle产品及版本 Oracle 11.2.0.4

问题排查细节

排查过程

下午到客户现场,检查awr报告和ash报告,发现等待事件如下:
图片2 1.png
该事件与上次未打补丁的基本一致,检查sql执行情况,发现truncate确实执行并长时间未完成,如下:
图片 2 21.png
检查ash报告,主要存在“enq: TX - contention”事件,查询语句均是监控的语句:
图片 2 3.png
发现truncate table表的事件都是“enq: RO - contention”和“local write wait”,如下图;
图片 2 4.png
由于该事件在打补丁后重复发生,4月8日下午通过升级,开SR(Service Requests)处理。
4月11日补充trace日志和ASH DUMP信息给SR,经过SR分析,造成该问题原因是:3个 Session(Sid:24420、10366、18823) 同时做 Truncate 处理,被 CKPT(sid:14086)、DBRW(sid:10330)进程阻塞,发生 enq: RO - contention,local write wait 等待。

问题原因

TRUNCATE 和 DROP TABLE 的时候,ORACLE 必须使 BUFFER Cache 中所有该对象的数据块失效或者刷新到磁盘。步骤:此时请求 RO 队列锁,找缓冲区中该对象的块,并使其无效化或者刷新到磁盘,然后释放 RO 锁,如果多个进程并发地进行 TRUNCATE 的时候,就会在 RO 队列上发生竞争,表现为等待事件 enq: RO fast object reuse或者 . enq: RO - contention。如果 TRUNCATE 等待 DBWR 相关的块刷新到磁盘,就表现为等待时间 local write wait。
也就是说 TRUNCATE 动作会等待 CKPT、DBWR 执行 Checkpoint 把 Dirty Buffer Data 全部写入到 Disk。
所以,等待时间取决于以下因素。

  • Buffer Cache 状况(Buffer Cache 越大,等待事件可能越长)
  • I/O 状况(I/O 越慢,等待事件越长)
  • 并行 TRUNCATE(并行越多,RO enqueue 的等待越显著)。
    通过 AWR Report 来看,db file async I/O submit 的平均等待事件很长,说明 System I/O 很慢。

总结建议

1、TRUNCATE 处理不要多个并发处理,避免 RO Enqueue 锁的争用。
2、TRUNCATE 处理建议放在业务空闲时间段实施,避免 Checkpoint 操作时的等待。
通过 alert log 来看,问题发生时间段 log switch 非常频繁。
3、通过 OS 层面确认 I/O performance,改善 db file async I/O submit 等待的时间。
4、对于要频繁 Truncate 的表可以使用不同的 Buffer Pool(比如:KEEP Pool、Recycle Pool),
使得 Buffer Cache 使用上没有争用。
hhh6.jpg


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23825935/viewspace-3050563/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
11年数据库行业经验,Oracle ACE、PG ACE、OCM、IBM Certified DBA、MySQL OCP、PolarDB技术专家、KCP、PCTP、PCSD、达梦师资认证、PolarDB开源社区技术顾问、ITPUB认证专家、某高校外聘教师

注册时间:2019-05-05

  • 博文量
    295
  • 访问量
    300753