测试平台: RHEL4.8 x8_64 + Oracle Database 10.2.0.4
1) 工具描述
orabm是一个开源的系统CPU性能测试工具, 包含了一套SQL脚本和几个命令行程序. Orabm通过在用户指定的并发下运行指定数量的事务来测试数据库的TPS值. TPS是Transactions Per Second的缩写, 也就是事务数/秒, 它是软件测试结果的测量单位. 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程. 客户机在发送请求时开始计时, 收到服务器响应后结束计时, 以此来计算使用的时间和完成的事务个数, 最终利用这些信息来估计得分.
2) 下载安装
orabm下载地址:
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /pub/2011/08/17/通过开源工具orabm计算TPS值来测试服务器CPU性能/
然后
$ cd /orahome/wangnc/os/
$ rz
$ tar xvf orabm.tar
$ cd install
$ ls
orabm_analyze.sql orabm_cache.sql orabm_ind.sql orabm_query_cache.sql orabm_serverside_stress.sql orabm_tab_rm.sql orabm_tab.sql orabm_user.sql _vti_cnf
注意: 缺省的orabm测试用用户会建立在tools表空间, 如果想把数据放在其他表空间可以修改orabm_user.sql来调整.
$ vi orabm_user.sql
$ sqlplus / as sysdba @orabm_user.sql
$ sqlplus / as sysdba @orabm_tab.sql
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$LD_LIBRARY_PATH
$ chmod u+x ../bin/linux/orabmload.10g.linux
$ ../bin/linux/orabmload.10g.linux Warehouses 1
$ sqlplus / as sysdba @orabm_ind.sql
$ sqlplus / as sysdba @orabm_analyze.sql
$ sqlplus / as sysdba @orabm_serverside_stress.sql
$ sqlplus / as sysdba @orabm_cache.sql
3) 简单测试
orabm后接2个参数(如果测试远程的压力则接三个参数), 第一个参数表示测试多少个并发(对应多个session), 第二个参数表示执行多少个事务(不是所有的并发共执行多少事务,而是每个并发执行的事务数), 一般来说这个值设置为10000, 第三个参数是在测试远程数据库的时候用的, 值为tnsnames.ora配置的远程数据库连接的别名.
$ cd ../bin/linux/
$ chmod u+x orabm.10g.linux
$ ./orabm.10g.linux 1 10000
---begin sess=1 txn=10000 ORACLE_SID=ESUITE Tue Jul 14 13:36:18 2009
ESUITE.LK txn(all)=10000 xn(sam)=7999 t(sam)=3 tps=2666 sl=3980(49.8%) on=2367(29.6%) oi=1652(20.7%) end=140709-13:36:23
---end - Tue Jul 14 13:36:23 2009
输出结果的说明:
txn(all)----代表Total transaction Count, 总的事务数量
xn(sam)-----采样的事务数量
t(sam)------采样事务运行的时间
tps的计算: 每一个阶段所有session的tps相加就是当前测试的总tps了.
执行的结果会打印在屏幕上, 同时会生成一个orabm.${ORACLE_SID}.log的文件, 该文件内容是累加的. 如果所有的测试表和相关索引都已经Cache到内存中, 系统上没有其他任务运行, 那么可以看到单个Orabm Session会使用将近100%的CPU资源. 可以使用Top来查看CPU使用情况, 或者检查数据库中不存在\"db file sequential read\"等待事件.