oracle怎么测试包,Oracle 11g内置的IO测试包

这两天部门有个同事上新系统, 感觉Orion进行压力测试比较麻烦, 我印象中, Oracle

11g引入了一个进行IO压力测试的包,

具体的过程名包含Calibrat,就到自己测试环境的@?/rdbms/admin目录下查找了一把,得到了下列这些内容..

--catrm.sql 是Resource Manager的基础包, 包含resource manager相关的系统视图信息,

--通过这些视图可以知道当前Calibration进行的状态,以及Calibration结束之后系统的相关的统计信息.

catrm.sql:Rem vkolla 01/23/07 - use DBA_RSRC_IO_CALIBRATE

catrm.sql:Rem vkolla 11/13/06 - remove DBA_RSRC_IO_CALIBRATE

catrm.sql:Rem suelee 06/11/06 - Add IO calibration tables

catrm.sql:-- create the view DBA_RSRC_IO_CALIBRATE

catrm.sql:create or replace view DBA_RSRC_IO_CALIBRATE

catrm.sql: from sys.resource_io_calibrate$

catrm.sql:comment on table DBA_RSRC_IO_CALIBRATE is

catrm.sql:'Results of the most recent I/O calibration'

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.START_TIME is

catrm.sql:'start time of the most recent I/O calibration'

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.END_TIME is

catrm.sql:'end time of the most recent I/O calibration'

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.MAX_IOPS is

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.MAX_MBPS is

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.MAX_PMBPS is

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.LATENCY is

catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.NUM_PHYSICAL_DISKS is

catrm.sql:create or replace public synonym DBA_RSRC_IO_CALIBRATE

catrm.sql: for DBA_RSRC_IO_CALIBRATE

catrm.sql:grant select on DBA_RSRC_IO_CALIBRATE to SELECT_CATALOG_ROLE

--cdfixed.sql 是系统v$fixed_table相关的动态性能视图的生成脚本. 其中包含部分关于Calibration运行中的状态信息.

cdfixed.sql:Rem vkolla 01/23/07 - calibration_results to status

cdfixed.sql:Rem vkolla 11/17/06 - v$io_calibration_results

cdfixed.sql:create or replace view v_$io_calibration_status

cdfixed.sql:as select * from v$io_calibration_status;

cdfixed.sql:create or replace public synonym v$io_calibration_status

cdfixed.sql: for v_$io_calibration_status;

cdfixed.sql:grant select on v_$io_calibration_status to SELECT_CATALOG_ROLE;

cdfixed.sql:create or replace view gv_$io_calibration_status

cdfixed.sql:as select * from gv$io_calibration_status;

cdfixed.sql:create or replace public synonym gv$io_calibration_status

cdfixed.sql: for gv_$io_calibration_status;

cdfixed.sql:grant select on gv_$io_calibration_status to SELECT_CATALOG_ROLE;

--dbmsrmad.sql 包含dbms_resource_manager相关的系统包的定义信息, 查看此脚本即可知道如何使用此calibration方法.

dbmsrmad.sql:Rem vkolla 08/07/06 - remove calibrate_mode from calibrate_io

dbmsrmad.sql:Rem suelee 06/11/06 - Add IO calibration routines

dbmsrmad.sql: -- Initiate an I/O calibration

dbmsrmad.sql: PROCEDURE calibrate_io (

sys@DBMAIN>desc dbms_resource_manager

PROCEDURE CALIBRATE_IO

Argument Name Type In/Out Default?

------------------------------ ----------------------- ------ --------

NUM_PHYSICAL_DISKS BINARY_INTEGER IN DEFAULT

MAX_LATENCY BINARY_INTEGER IN DEFAULT

MAX_IOPS BINARY_INTEGER OUT

MAX_MBPS BINARY_INTEGER OUT

ACTUAL_LATENCY BINARY_INTEGER OUT

--过程calibration_io有5个参数, 第一个参数输入本地的物理磁盘个数(不是看到的分区个数,或者通过存储输出的Lun的个数),随着指定的磁盘数目的变化,Calibrate_io也会与Orion一样最终会增加测试的压力, 可能的结果就是最后得到的iops/mbps的结果会稍好, 但是actual_latency的值会稍大.

第二个参数为可接受的最大延迟. 我最初对此的理解是, 这是压力测试程序能够接受的最大延迟, 超过此可能就不再进行测试. 不过,经过测试,我感觉这个并不是严格的限制.

第三个参数为测试出来的系统能够支撑的最大IOPS

第四个参数为测试出来的系统能够支撑的最大MBPS

第五个参数我个人估计应该是系统在最大IOPS时对应的响应时间.

下面为我在自己系统上运行的脚本以及其运行结果.

sys@DBMAIN>set timing on serveroutput on

sys@DBMAIN>declare

2 v_max_iops BINARY_INTEGER;

3 v_max_mbps BINARY_INTEGER;

4 v_act_lat BINARY_INTEGER;

5 begin

6 dbms_resource_manager.CALIBRATE_IO(1,20,v_max_iops,v_max_mbps,v_act_lat);

7 dbms_output.put_line('max iops : ' || v_max_iops );

8 dbms_output.put_line('max mbps : ' || v_max_mbps );

9 dbms_output.put_line('actual latency : ' || v_act_lat );

10 end;

11 /

max iops : 64

max mbps : 26

actual latency : 14

PL/SQL procedure successfully completed.

Elapsed: 00:11:32.29

--将num_disk设置成一个更大的数字后的测试效果.

sys@DBMAIN>declare

2 v_max_iops BINARY_INTEGER;

3 v_max_mbps BINARY_INTEGER;

4 v_act_lat BINARY_INTEGER;

5 begin

6 dbms_resource_manager.CALIBRATE_IO(4,20,v_max_iops,v_max_mbps,v_act_lat);

7 dbms_output.put_line('max iops : ' || v_max_iops );

8 dbms_output.put_line('max mbps : ' || v_max_mbps );

9 dbms_output.put_line('actual latency : ' || v_act_lat );

10 end;

11 /

max iops : 66 --注意此处以及下面的两个值都变大了, iops/mbps增长的量很小, 真实IO延迟则大大提高了.

max mbps : 33

actual latency : 29

PL/SQL procedure successfully completed.

Elapsed: 00:13:07.11

--calibrate_io执行后的相关测试结果也可以通过查询视图dba_rsrc_io_calibrate来获得.

sys@DBMAIN>col start_time format a30

sys@DBMAIN>col end_time format a30

sys@DBMAIN>l

1* select * from dba_rsrc_io_calibrate

sys@DBMAIN>/

START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY NUM_PHYSICAL_DISKS

------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ------------------

05-APR-10 09.59.51.135124 AM 05-APR-10 10.12.58.120160 AM 66 33 17 29 4

Elapsed: 00:00:00.01

--查询此视图得到的相关结果与上面根据procedure的output参数得到的结果基本一致,唯一的例外是此处还有一个MAX_PMBPS列,此列表示单个进程最大可以达到的吞吐量(此处为17MB/s).

使用dbms_resource_manager.calibrate_io进行io测试需要系统支持异步IO,

也就是系统安装时必须安装有libaio(我所使用的RHEL 5.3使用的是libaio-0.3.106-3.2),

另外数据库的参数必须设置为支持异步IO.

--如果数据库使用的是ASM,只要disk_asynch_io为True(默认值)就可以使用了

sys@DBMAIN>show parameter disk_asynch_io

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

disk_asynch_io boolean TRUE

sys@DBMAIN>

--如果数据库的数据文件是基于文件系统的,则还需要设置如下参数,它的默认值为none, 要支持异步IO,需要将此参数设置为asynch,并重启数据库才能生效.

--alter system set filesystemio_options = asynch scope=spfile;

--shutdown immediate;

--startup

sys@DBMAIN>show parameter filesystemio_options

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

filesystemio_options string none

--系统中哪些数据文件支持Async可以通过如下查询获得.

sys@DBMAIN>col name format a50

sys@DBMAIN>l

1 select name,asynch_io from v$datafile f,v$iostat_file i

2 where f.file#=i.file_no

3* and (filetype_name='Data File' or filetype_name='Temp File')

sys@DBMAIN>/

NAME ASYNCH_IO

-------------------------------------------------- ---------

+DATA/dbmain/datafile/system.261.713375671 ASYNC_ON

+DATA/dbmain/datafile/sysaux.262.713375711 ASYNC_ON

+DATA/dbmain/datafile/sysaux.262.713375711 ASYNC_ON

+DATA/dbmain/datafile/undotbs.263.713375731 ASYNC_ON

+DATA/dbmain/datafile/test8k.265.713381589 ASYNC_ON

+DATA/dbmain/datafile/indx.269.713798841 ASYNC_ON

+DATA/dbmain/datafile/test.270.715172511 ASYNC_ON

7 rows selected.

本文参考以下内容:

Oracle的官方文档DBMS_RESOURCE_MANAGER

Arup Nanda的博客文章Resource Manager I/O Calibration in 11g

No related posts.

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值