原文地址:http://www.oracle-base.com/articles/misc/measuring-storage-performance-for-oracle-systems.php
存储供应商为他们的产品提供了大量的性能数据,但是这些信息不一定反应了用于Oracle数据库时的存储性能。本文概述了一些用于测试存储系统性能的简单方法,包括Oracle提供的一些实用工具。
Oracle实用工具使用模拟负载仿真Oracle数据库的操作类型。
DD
可以通过计算dd命令写入的时间,快速粗略地测试磁盘的性能。
# time sh -c "dd if=/dev/zero f=dd-test-file bs=8k count=1000000 && sync"
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB) copied, 126.739 seconds, 64.6 MB/s
real 2m9.576s
user 0m0.147s
sys 0m12.234s
# ls -l dd-test-file
-rw-r--r-- 1 root root 8192000000 Mar 7 11:36 dd-test-file
这种方法不能反应通过Oracle系统访问时的磁盘性能。
ORION
ORION(ORacle IO Numbers)模拟Oracle数据库执行的I/O类型,用于不需要安装Oracle时测量存储系统的I/O性能。下载地址:http://www.oracle.com/technetwork/cn/topics/index-088165-zhs.html
下载对于平台的文件后进行解压,修改文件的可执行权限:
# gunzip orion_linux_x86-64.gz
# chmod u+x orion_linux_x86-64
使用以下命令显示帮助信息。
# ./orion_linux_x86-64 -help
执行测试之前需要知道Oracle使用的LUN。本文使用虚拟机进行测试,因此使用ext3文件系统伪造几个LUN。
# mkdir /luns
# dd if=/dev/zero f=/luns/lun1 bs=1024k count=10
# dd if=/dev/zero f=/luns/lun2 bs=1024k count=10
# dd if=/dev/zero f=/luns/lun3 bs=1024k count=10
# dd if=/dev/zero f=/luns/lun4 bs=1024k count=10
接下来,创建一个LUN配置文件。假设测试名为“ob-test”,因此配置文件名为“ob-test.lun”。确认配置文件与ORION可执行文件位于同一目录。文件内容如下:
/luns/lun1
/luns/lun2
/luns/lun3
/luns/lun4
如果没有指定测试名,默认为“orion”,配置文件名为“orion.lun”。
接下来是运行测试。以下运行的是一个全格点的测试,比较一系列小的I/O操作(8K)与大的I/O操作(1M)的性能。使用“normal”选项运行可能需要很长的时间,因此可以首先尝试运行“basic”选项。
# ./orion_linux_x86-64 -run normal -testname ob-test
ORION: ORacle IO Numbers -- Version 11.1.0.7.0
ob-test_20100720_1229
Test will take approximately 190 minutes
Larger caches may take longer
测试完成之后,在ORION程序目录将会创建几个新文件,包含了每个测试的IOPS、MBPS以及等待时间。此次运行产生的文件包括:
ob-test_20100720_1229_summary.txt
ob-test_20100720_1229_iops.csv
ob-test_20100720_1229_mbps.csv
ob-test_20100720_1229_lat.csv
ob-test_20100720_1229_trace.txt
记住,仿真都不是完美的,但是测试结果能够让你知道存储系统能够达到的性能。
DBMS_RESOURCE_MANAGER.CALIBRATE_IO
在Oracle Database 11g Release 1中引入的过程CALIBRATE_IO从Oracle内部提供了获取存储系统性能的方法。该过程的使用存在一些限制。
- 该过程的调用需要SYSDBA权限。
- TIMED_STATISTICS参数必须设置为TRUE,这是STATISTICS_LEVEL参数设置为TYPICAL时的默认值。
- 数据文件必须使用异步I/O进行访问,这是使用ASM时的默认设置。
可以通过以下查询检查数据文件当前的异步I/O设置。
SELECT d.name,
i.asynch_io
FROM v$datafile d,
v$iostat_file i
WHERE d.file# = i.file_no
AND i.filetype_name = 'Data File';
NAME ASYNCH_IO
-------------------------------------------------- ---------
/u01/app/oracle/oradata/DB11G/system01.dbf ASYNC_OFF
/u01/app/oracle/oradata/DB11G/sysaux01.dbf ASYNC_OFF
/u01/app/oracle/oradata/DB11G/undotbs01.dbf ASYNC_OFF
/u01/app/oracle/oradata/DB11G/users01.dbf ASYNC_OFF
/u01/app/oracle/oradata/DB11G/example01.dbf ASYNC_OFF
5 rows selected.
要打开异步I/O,提交以下命名并重启数据库。
ALTER SYSTEM SET filesystemio_options=setall SCOPE=SPFILE;
如果存储支持异步I/O,ASYNC_IO标记现在应该发生了改变。
SELECT d.name,
i.asynch_io
FROM v$datafile d,
v$iostat_file i
WHERE d.file# = i.file_no
AND i.filetype_name = 'Data File';
NAME ASYNCH_IO
-------------------------------------------------- ---------
/u01/app/oracle/oradata/DB11G/system01.dbf ASYNC_ON
/u01/app/oracle/oradata/DB11G/sysaux01.dbf ASYNC_ON
/u01/app/oracle/oradata/DB11G/undotbs01.dbf ASYNC_ON
/u01/app/oracle/oradata/DB11G/users01.dbf ASYNC_ON
/u01/app/oracle/oradata/DB11G/example01.dbf ASYNC_ON
5 rows selected.
然后运行以下代码调用该过程。
CONN / AS SYSDBA
SET SERVEROUTPUT ON
DECLARE
l_latency PLS_INTEGER;
l_iops PLS_INTEGER;
l_mbps PLS_INTEGER;
BEGIN
DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1,
max_latency => 20,
max_iops => l_iops,
max_mbps => l_mbps,
actual_latency => l_latency);
DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
DBMS_OUTPUT.put_line('Latency = ' || l_latency);
END;
/
Max IOPS = 95
Max MBPS = 449
Latency = 20
PL/SQL procedure successfully completed.
除了在屏幕显示之外,校准结果可以通过视图DBA_RSRC_IO_CALIBRATE进行查看。
SET LINESIZE 100
COLUMN start_time FORMAT A20
COLUMN end_time FORMAT A20
SELECT TO_CHAR(start_time, 'DD-MON-YYY HH24:MI:SS') AS start_time,
TO_CHAR(end_time, 'DD-MON-YYY HH24:MI:SS') AS end_time,
max_iops,
max_mbps,
max_pmbps,
latency,
num_physical_disks AS disks
FROM dba_rsrc_io_calibrate;
START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY DISKS
-------------------- -------------------- ---------- ---------- ---------- ---------- ----------
20-JUL-010 18:07:21 20-JUL-010 18:13:55 95 449 461 20 1
校准过程可以通过视图V$IO_CALIBRATEION_STATUS进行监控。
SLOB
除了以上方法之外,还可以尝试Kevin Closson的SLOB工具。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24945919/viewspace-756687/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24945919/viewspace-756687/