Oracle I/O 基准测试:一条命令看懂磁盘性能

“系统上线前,DBA 最怕听到的一句话是什么?” “磁盘 I/O 扛不住了!”

为了避免这种尴尬,Oracle 早在 11g 就内置了 I/O 校准 工具,不需要第三方压测软件,一条 PL/SQL 就能把磁盘的最大 IOPS、吞吐量(MB/s)以及延迟(ms)测得明明白白。


前置条件

  1. 版本要求:Oracle 11g R2 及以上。
  2. 权限要求:需要 SYSDBASYSASM 角色。
  3. 业务窗口:测试会跑大量随机/顺序 I/O,建议业务低谷或测试环境执行。
  4. 磁盘数量:如果你用的是 ASM,确保所有磁盘都在线;单实例文件系统也没问题,Oracle 会按“可见磁盘”计算。

脚本

-- 1. 登录
sqlplus / as sysdba

-- 2. 执行
SET TIMING ON
SET SERVEROUTPUT ON
DECLARE
l_iops   NUMBER;
l_mbps   NUMBER;
l_lat   NUMBER;
BEGIN
DBMS_RESOURCE_MANAGER.CALIBRATE_IO(
  disk_count     => &输入磁盘数,
  max_latency    => &最大可接受延迟_ms,
  max_iops       => l_iops,
  max_mbps       => l_mbps,
  actual_latency => l_lat);
DBMS_OUTPUT.PUT_LINE('IOPS   = ' || l_iops);
DBMS_OUTPUT.PUT_LINE('MB/s   = ' || l_mbps);
DBMS_OUTPUT.PUT_LINE('LAT(ms)= ' || l_lat);
END;
/

-- 3. 查询历史
SELECT * FROM DBA_RSRC_IO_CALIBRATE ORDER BY START_TIME DESC FETCH FIRST 1 ROW ONLY;

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部