Oracle 11g内置的IO测试包
来源:互联网 发布:软件销售合同范本 编辑:程序博客网 时间:2024/05/16 11:32
Oracle 11g内置的IO测试包
这两天部门有个同事上新系统, 感觉Orion进行压力测试比较麻烦, 我印象中, Oracle 11g引入了一个进行IO压力测试的包, 具体的过程名包含Calibrat,就到自己测试环境的@?/rdbms/admin目录下查找了一把,得到了下列这些内容..
01
--catrm.sql 是Resource Manager的基础包, 包含resource manager相关的系统视图信息,
02
--通过这些视图可以知道当前Calibration进行的状态,以及Calibration结束之后系统的相关的统计信息.
03
catrm.sql:Rem vkolla 01/23/07 - use DBA_RSRC_IO_CALIBRATE
04
catrm.sql:Rem vkolla 11/13/06 - remove DBA_RSRC_IO_CALIBRATE
05
catrm.sql:Rem suelee 06/11/06 -
Add
IO calibration tables
06
catrm.sql:
-- create the view DBA_RSRC_IO_CALIBRATE
07
catrm.sql:
create
or
replace
view
DBA_RSRC_IO_CALIBRATE
08
catrm.sql:
from
sys.resource_io_calibrate$
09
catrm.sql:comment
on
table
DBA_RSRC_IO_CALIBRATE
is
10
catrm.sql:
'Results of the most recent I/O calibration'
11
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.START_TIME
is
12
catrm.sql:
'start time of the most recent I/O calibration'
13
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.END_TIME
is
14
catrm.sql:
'end time of the most recent I/O calibration'
15
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.MAX_IOPS
is
16
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.MAX_MBPS
is
17
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.MAX_PMBPS
is
18
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.LATENCY
is
19
catrm.sql:comment
on
column
DBA_RSRC_IO_CALIBRATE.NUM_PHYSICAL_DISKS
is
20
catrm.sql:
create
or
replace
public
synonym DBA_RSRC_IO_CALIBRATE
21
catrm.sql:
for
DBA_RSRC_IO_CALIBRATE
22
catrm.sql:
grant
select
on
DBA_RSRC_IO_CALIBRATE
to
SELECT_CATALOG_ROLE
23
--cdfixed.sql 是系统v$fixed_table相关的动态性能视图的生成脚本. 其中包含部分关于Calibration运行中的状态信息.
24
cdfixed.sql:Rem vkolla 01/23/07 - calibration_results
to
status
25
cdfixed.sql:Rem vkolla 11/17/06 - v$io_calibration_results
26
cdfixed.sql:
create
or
replace
view
v_$io_calibration_status
27
cdfixed.sql:
as
select
*
from
v$io_calibration_status;
28
cdfixed.sql:
create
or
replace
public
synonym v$io_calibration_status
29
cdfixed.sql:
for
v_$io_calibration_status;
30
cdfixed.sql:
grant
select
on
v_$io_calibration_status
to
SELECT_CATALOG_ROLE;
31
cdfixed.sql:
create
or
replace
view
gv_$io_calibration_status
32
cdfixed.sql:
as
select
*
from
gv$io_calibration_status;
33
cdfixed.sql:
create
or
replace
public
synonym gv$io_calibration_status
34
cdfixed.sql:
for
gv_$io_calibration_status;
35
cdfixed.sql:
grant
select
on
gv_$io_calibration_status
to
SELECT_CATALOG_ROLE;
36
--dbmsrmad.sql 包含dbms_resource_manager相关的系统包的定义信息, 查看此脚本即可知道如何使用此calibration方法.
37
dbmsrmad.sql:Rem vkolla 08/07/06 - remove calibrate_mode
from
calibrate_io
38
dbmsrmad.sql:Rem suelee 06/11/06 -
Add
IO calibration routines
39
dbmsrmad.sql:
-- Initiate an I/O calibration
40
dbmsrmad.sql:
PROCEDURE
calibrate_io (
01
sys@DBMAIN>
desc
dbms_resource_manager
02
PROCEDURE
CALIBRATE_IO
03
Argument
Name
Type
In
/
Out
Default
?
04
------------------------------ ----------------------- ------ --------
05
NUM_PHYSICAL_DISKS BINARY_INTEGER
IN
DEFAULT
06
MAX_LATENCY BINARY_INTEGER
IN
DEFAULT
07
MAX_IOPS BINARY_INTEGER
OUT
08
MAX_MBPS BINARY_INTEGER
OUT
09
ACTUAL_LATENCY BINARY_INTEGER
OUT
10
11
--过程calibration_io有5个参数, 第一个参数输入本地的物理磁盘个数(不是看到的分区个数,或者通过存储输出的Lun的个数),随着指定的磁盘数目的变化,Calibrate_io也会与Orion一样最终会增加测试的压力, 可能的结果就是最后得到的iops/mbps的结果会稍好, 但是actual_latency的值会稍大.
12
第二个参数为可接受的最大延迟. 我最初对此的理解是, 这是压力测试程序能够接受的最大延迟, 超过此可能就不再进行测试. 不过,经过测试,我感觉这个并不是严格的限制.
13
第三个参数为测试出来的系统能够支撑的最大IOPS
14
第四个参数为测试出来的系统能够支撑的最大MBPS
15
第五个参数我个人估计应该是系统在最大IOPS时对应的响应时间.
下面为我在自己系统上运行的脚本以及其运行结果.
01
sys@DBMAIN>
set
timing
on
serveroutput
on
02
sys@DBMAIN>
declare
03
2 v_max_iops BINARY_INTEGER;
04
3 v_max_mbps BINARY_INTEGER;
05
4 v_act_lat BINARY_INTEGER;
06
5
begin
07
6 dbms_resource_manager.CALIBRATE_IO(1,20,v_max_iops,v_max_mbps,v_act_lat);
08
7 dbms_output.put_line(
'max iops : '
|| v_max_iops );
09
8 dbms_output.put_line(
'max mbps : '
|| v_max_mbps );
10
9 dbms_output.put_line(
'actual latency : '
|| v_act_lat );
11
10
end
;
12
11 /
13
max
iops : 64
14
max
mbps : 26
15
actual latency : 14
16
17
PL/SQL
procedure
successfully completed.
18
19
Elapsed: 00:11:32.29
20
21
--将num_disk设置成一个更大的数字后的测试效果.
22
sys@DBMAIN>
declare
23
2 v_max_iops BINARY_INTEGER;
24
3 v_max_mbps BINARY_INTEGER;
25
4 v_act_lat BINARY_INTEGER;
26
5
begin
27
6 dbms_resource_manager.CALIBRATE_IO(4,20,v_max_iops,v_max_mbps,v_act_lat);
28
7 dbms_output.put_line(
'max iops : '
|| v_max_iops );
29
8 dbms_output.put_line(
'max mbps : '
|| v_max_mbps );
30
9 dbms_output.put_line(
'actual latency : '
|| v_act_lat );
31
10
end
;
32
11 /
33
max
iops : 66
--注意此处以及下面的两个值都变大了, iops/mbps增长的量很小, 真实IO延迟则大大提高了.
34
max
mbps : 33
35
actual latency : 29
36
37
PL/SQL
procedure
successfully completed.
38
39
Elapsed: 00:13:07.11
40
41
--calibrate_io执行后的相关测试结果也可以通过查询视图dba_rsrc_io_calibrate来获得.
42
sys@DBMAIN>col start_time format a30
43
sys@DBMAIN>col end_time format a30
44
sys@DBMAIN>l
45
1*
select
*
from
dba_rsrc_io_calibrate
46
sys@DBMAIN>/
47
48
START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY NUM_PHYSICAL_DISKS
49
------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ------------------
50
05-APR-10 09.59.51.135124 AM 05-APR-10 10.12.58.120160 AM 66 33 17 29 4
51
52
Elapsed: 00:00:00.01
53
--查询此视图得到的相关结果与上面根据procedure的output参数得到的结果基本一致,唯一的例外是此处还有一个MAX_PMBPS列,此列表示单个进程最大可以达到的吞吐量(此处为17MB/s).
使用dbms_resource_manager.calibrate_io进行io测试需要系统支持异步IO, 也就是系统安装时必须安装有libaio(我所使用的RHEL 5.3使用的是libaio-0.3.106-3.2), 另外数据库的参数必须设置为支持异步IO.
01
--如果数据库使用的是ASM,只要disk_asynch_io为True(默认值)就可以使用了
02
sys@DBMAIN>show parameter disk_asynch_io
03
NAME
TYPE VALUE
04
------------------------------------ ----------- ------------------------------
05
disk_asynch_io boolean
TRUE
06
sys@DBMAIN>
07
--如果数据库的数据文件是基于文件系统的,则还需要设置如下参数,它的默认值为none, 要支持异步IO,需要将此参数设置为asynch,并重启数据库才能生效.
08
--alter system set filesystemio_options = asynch scope=spfile;
09
--shutdown immediate;
10
--startup
11
sys@DBMAIN>show parameter filesystemio_options
12
13
NAME
TYPE VALUE
14
------------------------------------ ----------- ------------------------------
15
filesystemio_options string none
16
17
--系统中哪些数据文件支持Async可以通过如下查询获得.
18
sys@DBMAIN>col
name
format a50
19
sys@DBMAIN>l
20
1
select
name
,asynch_io
from
v$datafile f,v$iostat_file i
21
2
where
f.file#=i.file_no
22
3*
and
(filetype_name=
'Data File'
or
filetype_name=
'Temp File'
)
23
sys@DBMAIN>/
24
25
NAME
ASYNCH_IO
26
-------------------------------------------------- ---------
27
+DATA/dbmain/datafile/system.261.713375671 ASYNC_ON
28
+DATA/dbmain/datafile/sysaux.262.713375711 ASYNC_ON
29
+DATA/dbmain/datafile/sysaux.262.713375711 ASYNC_ON
30
+DATA/dbmain/datafile/undotbs.263.713375731 ASYNC_ON
31
+DATA/dbmain/datafile/test8k.265.713381589 ASYNC_ON
32
+DATA/dbmain/datafile/indx.269.713798841 ASYNC_ON
33
+DATA/dbmain/datafile/test.270.715172511 ASYNC_ON
34
35
7
rows
selected.
本文参考以下内容:
Oracle的官方文档 DBMS_RESOURCE_MANAGER
Arup Nanda的博客文章 Resource Manager I/O Calibration in 11g
No related posts.
0 0
- Oracle 11g内置的IO测试包
- oracle内置IO测试包dbms_resource_manager.CALIBRATE_IO
- oracle 11g IO校准
- Oracle 11g R2 的 Grid Infrastructure 安装包
- CentOS6 安装Oracle 11g 所需要的依赖包
- Linux下安装oracle 11g需要的rpm包
- linux5下安装oracle 11g需要的rpm包
- Oracle内置包
- 测试oracle 11g cluster 中OLR的重要性
- Jadepool3.2测试Oracle Database 11g的结果
- Oracle 11g中的IO Calibrate(IO校准)
- Oracle 11g中的IO Calibrate(IO校准)
- 『ORACLE』 内置约束(11g)
- Oracle数据库10g 的备份测试
- DB2 兼容 Oracle 11g测试
- oracle 10g 内置sql函数
- oracle 11g 自动收集统计信息 导致IO过大
- MyEclipse中引入Oracle 11g自带的JDBC包
- VS2010单词高亮插件免费下载
- ImageView的属性android:scaleType作用
- Android---歌词加载
- 黑马程序员_多态
- USB描述符详解
- Oracle 11g内置的IO测试包
- 二、ApplicationContext的事件机制
- Linux 学习小结(首次登录与在线求助)
- Spring 的优秀工具类盘点
- 人民大学在职研究生有哪些职业上的需求
- usb otg的一些简介
- VC/MFC之ListCtrl控件使用经验总结(转)
- MyBatis 整合 Spring开发
- Android_ics_stagefright框架数据流向分析