真正反映i/o分布不均的是av i/o wait (ms)、physical reads、av rd(ms)三字段交叉分析:某文件physical reads占比低但av i/o wait (ms)显著高于其他文件(如18ms vs 2–4ms),即为压力集中铁证;须手动按av rd(ms)排序,避免默认physical reads排序误导。
file io stats章节里哪些字段真能反映io分布不均
awr报告中的file io stats不是看“谁读得多”,而是看“谁等得久+谁被读得集中”。关键字段只有三个:av i/o wait (ms)、physical reads、av rd(ms)(注意不是av blk rd(ms))。前两者必须交叉看:某文件physical reads只占全库5%,但av i/o wait (ms)高达18ms,而其他文件普遍在2–4ms,这就是分布不均的铁证——压力没摊开,全压在它身上了。
容易踩的坑:
-
Av Blk Rd(ms)是平均单块读延迟,受块大小影响大,SSD上可能虚低;Av Rd(ms)才是真实I/O等待毫秒数,必须盯它 - 报告默认按
Physical Reads降序排,但高读数文件可能延迟很低(比如归档日志文件),得手动按Av Rd(ms)重新排序 - 同一表空间下多个数据文件,若只有1个文件
Av Rd(ms) > 10而其余都
怎么从File IO Stats快速定位到具体表空间和对象
AWR报告里的File IO Stats只显示File#和Tablespace名,不显示文件路径或所属对象。要往下钻,得立刻查数据库:
- 用
SELECT tablespace_name, file_name FROM dba_data_files WHERE file_id = &file_id;确认物理路径和自动扩展状态 - 查
dba_segments找该表空间内blocks最大或last_analyzed最旧的几个段:SELECT owner, segment_name, segment_type, blocks FROM dba_segments WHERE tablespace_name = 'USERS' ORDER BY blocks DESC FETCH FIRST 5 ROWS ONLY; - 特别注意
segment_type = 'TABLE'且buffer_pool = 'KEEP'的表——这类表常被误配,导致缓存失效、反复物理读
别依赖报告里“Tablespace IO Stats”汇总行:它和File IO Stats数值对不上,因为前者采样逻辑不同,仅作趋势参考。
为什么SYSAUX或SYSTEM表空间的IO延迟突然升高
在Oracle 19c中,SYSAUX或SYSTEM表空间Av Rd(ms)跳变,90%不是存储问题,而是内部组件失控:
-
optimizer_stats_advisor任务频繁运行:查DBA_AUTOTASK_JOB_HISTORY,若job_name含STATS且status = 'SUCCEEDED'但耗时>300秒,基本就是它在扫大表统计信息 -
unified auditing写入暴增:查V$AUDIT_TRAIL最近1小时记录数,超10万条/小时需检查审计策略是否开启AUDIT SELECT ON HR.EMPLOYEES这类细粒度规则 -
Automatic Workload Repository快照本身在写:如果File IO Stats里file# = 3(通常是SYSAUX)的Physical Writes占比突增至60%以上,大概率是AWR快照生成期间触发了大量INSERT INTO wrh$_xxx操作
此时db file sequential read等待事件会集中在WRH$_SQL_BIND_METADATA或WRH$_EVENT_HISTOGRAM这类基表上,不是SQL写得差,是Oracle自己在刷数据。
对比多个快照时File IO Stats的陷阱
单看一个AWR报告的File IO Stats容易误判。真正识别“分布不均”必须跨快照比:
- 取连续3个快照(比如SNAP_ID 1001/1002/1003),分别导出
File IO Stats表格,用Excel对齐File#后看Av Rd(ms)波动:若某文件从2ms → 15ms → 3ms,是偶发抖动;若持续>10ms且标准差 - 不要直接对比不同时间段的绝对值。用比例法:
(File_X_Physical_Reads / Total_Physical_Reads)在问题时段是否比正常时段高出2倍以上?这个比值比总数更有说服力 - RAC环境下,
File IO Stats默认只显示本实例数据。若怀疑跨节点IO倾斜,必须单独为每个INSTANCE_NUMBER生成AWR报告再比,不能合并看
最易被忽略的一点:File IO Stats里的Physical Reads包含direct path read,而Tablespace IO Stats不包含——这意味着如果你用了并行查询或/*+ APPEND */,两个章节的读数天然不一致,别拿它们互相验证。











