如何通过Oracle AWR排查归档写入性能瓶颈

冬杰姑娘_3506

冬杰姑娘_3506

2026-08-29

919人浏览

原创

归档写入慢本质是arch进程i/o或锁瓶颈,非日志生成过多;需查awr中log file switch (archiving needed)是否进top 5、其time waited是否高于checkpoint incomplete、db time/db cpu比值是否异常拉大、avg wait是否超阈值,并结合v$archive_dest_status状态及direct path write/enq: af等待定位归档路径或asm磁盘组问题。

如何通过oracle awr排查归档写入性能瓶颈

归档写入慢不是“归档日志生成太多”的问题,而是ARCH进程卡在I/O或锁上——AWR里log file switch (archiving needed)排进Top 5、ARCH进程wait event持续显示direct path writeenq: AF - allocate extent,基本就能锁定归档瓶颈点。

看Top 5 Timed Foreground Events里有没有log file switch (archiving needed)

这个等待事件一旦进入Top 5,说明归档跟不上日志切换节奏,不是日志生成快,是归档写不进去。关键要看三组数字:

  • log file switch (archiving needed)Time Waited是否持续高于log file switch (checkpoint incomplete)——前者高,就是归档拖后腿;后者高,才是检查点没做完
  • 同一时段DB TimeDB CPU比值是否明显拉大(比如DB Time=1800s,DB CPU=220s)——说明大量时间耗在等待,而非计算
  • 该事件的Avg wait (ms)是否超过50ms(OLTP环境)或200ms(DSS)——单次归档写入延迟已超出存储合理响应范围

v$archive_dest_status确认归档目标状态是否异常

AWR不直接暴露归档路径健康度,必须手动查动态视图。重点盯三个字段:

  • STATUS不是VALID(比如ERRORDEFERREDINACTIVE)→ 归档目标不可用,ARCH进程会轮询重试,产生大量log file switch (archiving needed)
  • DELAY_MINS > 0 → 归档路径有显式延迟配置,但实际延迟远超设定值,说明底层I/O或网络已卡住
  • TRANSMIT_MODEASYNCSTANDBY_LOGFILE_COUNT为0 → 物理备库未启用standby redo log,主库归档无法异步传递,被迫同步阻塞

执行命令:SELECT dest_id, status, delay_mins, transmit_mode, standby_logfile_count FROM v$archive_dest_status WHERE dest_id IN (1,2);

Agent Git Oracle
Agent Git Oracle

高级仓库分析与重构指南。基于AI推理识别技术债务与架构反模式。

下载

定位归档I/O瓶颈:别只看db file sequential read,要盯direct path writeenq: AF - allocate extent

归档写入本质是文件追加操作,主要消耗在磁盘写和ASM空间分配上。这两类等待事件才是真线索:

  • direct path write平均等待>15ms + Physical Writes Per Sec突增 → 归档目标存储(如NAS、NFS)响应慢,或挂载参数不当(如noac、hard mount)
  • enq: AF - allocate extent频次高(每秒>5次)+ AVG_WAIT_TIME_MS>100 → ASM磁盘组空间碎片化严重,或_asm_ausize设置过小(默认1M),导致频繁扩展AU
  • direct path writeenq: AF - allocate extent共现且占比合计>15%,优先查ASM磁盘组:SELECT group_number, state, total_mb, free_mb, type FROM v$asm_diskgroup;,free_mb

验证归档路径I/O能力:用v$asm_disk_iostat代替AWR的Tablespace IO Stats

归档日志默认写到DB_RECOVERY_FILE_DEST,该路径若使用ASM,AWR里的Tablespace IO Stats完全无效——它按表空间聚合,而归档日志文件属于RECOVERY AREA逻辑区,不归属任何用户表空间。

  • 必须查v$asm_disk_iostat,重点关注归档目标所在磁盘组的avg_read_msavg_write_ms(单位毫秒):SELECT group_number, ROUND((write_time/writes)*10,2) avg_write_ms FROM v$asm_disk_iostat WHERE writes > 0 ORDER BY avg_write_ms DESC;
  • OLTP环境avg_write_ms > 20ms、DSS环境 > 50ms,即表明归档写入存在物理瓶颈
  • write_errs > 0,立刻查对应磁盘的HEADER_STATUSSELECT name, header_status, mode_status FROM v$asm_disk WHERE group_number = &group_num;PROVISIONEDFAILED代表磁盘已失效

云环境(如AWS EBS gp3)必须换用v$asm_disk_iostat_sparse,它提供write_time_wait字段,能区分是ASM处理慢还是后端存储卡住。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

801

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

2193

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

2210

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1289

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

1873

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2389

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

3989

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

606

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程