SELECT NAME, VALUE
FROM V$SYSSTAT
WHERE NAME IN ('db block gets', 'consistent gets', 'physical reads');
-- 样本输出
NAME VALUE
---------------------- ------
db block gets 3,437
consistent gets 30,500
physical reads 1,963
Hit Ratio = 1 - (Physical Reads / (DB Block Gets + Consistent Gets))
本例:1 - 1963 / (3437 + 30500) = 92% ✅ 优秀 (OLTP 目标 > 90%)。
DB_BLOCK_BUFFERS (手动 SGA) 或 DB_CACHE_SIZE (自动 SGA)。| 争用类型 | 成因 | 消除手段 |
|---|---|---|
| 并行 I/O 争用 | 多进程同一时刻访问同一物理设备 | 分离表与索引到不同磁盘/ASM 磁盘组 |
| 干扰争用 | 顺序写 (归档/备份) 阻塞随机读 | 归档日志、备份文件、数据文件三路径物理隔离 |
SELECT DF.NAME, FS.PHYRDS, FS.PHYWRTS
FROM V$DATAFILE DF, V$FILESTAT FS
WHERE DF.FILE# = FS.FILE#;
PHYRDS:物理读次数PHYWRTS:物理写次数PCTFREE/PCTUSED/FREELISTS 减少行迁移/链接,降低额外 I/O。| 检查项 | 标准 | 异常处理 |
|---|---|---|
| 缓冲区命中率 | > 90% (OLTP) | 增 DB_CACHE_SIZE / 调整 SQL 减少逻辑读 |
| 单数据文件物理读/写 | 均衡分布 | 重组表空间、ASM 重平衡 |
| 行迁移/链接比例 | < 1% | ANALYZE TABLE ... LIST CHAINED ROWS → 迁移重组 |
| TEMP 表空间使用峰值 | 不溢出 | 增大 TEMP / 调优排序/Hash SQL |
总结:缓冲区命中率是「总开关」,I/O 争用监控是「分表器」,二者结合才能精准定位瓶颈并量化调优收益。