千家信息网

swingbench-免费的oracle性能压测工具

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,SwingBench介绍:SwingBench由负载生成器,协调器和集群概述组成。该软件使得能够生成负载并且将图表的事务/响应时间映射。SwingBench可用于演示和测试诸如实际应用集群,在线表重建
千家信息网最后更新 2026年11月03日swingbench-免费的oracle性能压测工具

SwingBench介绍:

SwingBench由负载生成器,协调器和集群概述组成。该软件使得能够生成负载并且将图表的事务/响应时间映射。

SwingBench可用于演示和测试诸如实际应用集群,在线表重建,备用数据库,在线备份和恢复等技术

SwingBench附带的代码包括6个基准,OrderEntry,SalesHistory,TPC-DS Like,JSON,CallingCircle和StressTest ..

OrderEntry基于Oracle11g / Oracle12c附带的"oe"模式。它已被修改,以便不需要安装Spatial,Intermedia架构。它可以连续运行(直到你用完了空间)。它在少量表上引入了大量争用,旨在强调互连和内存。它使用位于bin目录中的"oewizard"进行安装。基准测试都存在纯jdbc和pl / sql(较低的网络开销)变体。

SalesHistory基于Oracle11g / Oracle12c附带的"sh"架构,旨在测试复杂查询在对大型表进行运行时的性能。它是只读的,可以按照从1GB到1TB的默认大小进行缩放。自定义模式还允许创建更小和更大的模式

CallingCircle(不建议使用)模拟为在线电信应用程序生成的SQL。它需要在每次运行之前将数据文件从数据库服务器生成并复制到负载生成器,通常需要1到8 GB的磁盘空间。两个基准都是CPU密集型。经验表明,您至少需要1台处理器的负载发生器到数据库服务器的每两个处理器。它旨在强调CPU和内存,而不需要强大的I / O子系统。它使用位于bin目录中的"ccwizard"进行安装

StressTest只是根据一个熟知的表来触发随机插入,更新,选择和更新。

JSON Stresstest基于对机场之间飞行的人员进行建模的简单JSON文档。它遵循基本的CRUD模型。

TPC-DS喜欢Benchmark是类似于TPC-DS的基准。它在单独的配置文件中具有查询和事务工作负载。

SwingBench下载:

SwingBench官方网址:http://www.dominicgiles.com/swingbench.html,可以download下最新2.6版本的SwingBench,需要先安装好jdk8,可以直接从oracle官网下载rpm安装即可。SwingBench包文件解压后如下:

生成测试数据:

以order entry为示例:

图形界面生成测试数据和压测:

cd /tmp/swingbench/bin

./oewizard

选择version2.0, next

选择create the order entry schema,next

配置connect string、username和password, next

配置tablespaces的datafile, next

配置schema的size, next

默认值为CPU个数*2, next

点击yes , next

开始运行sql脚本生产测试数据,这里需要等待。

数据已成功生成,接下来可以做压测了。


开始性能压测:

cd /tmp/swingbench/bin

./swingbench

修改connect string,配置server monitoring相关配置参数,调整transtions的load ratio、number of users。

可以收集数据库信息,生成awr报告。启动压测

可以在output标签上查看压测结果

也可以在将结果保存在bin目录下,XML格式

测试结果对比生成html文件,用bmcompare工具


命令行界面生成测试数据和压测:

[root@oracle bin]# time ./oewizard -cl -create -scale 1 -cs //oracle:1521/xcky -dba system -dbap oracle -u soe1 -p soe1 -ts soe -df /u01/app/oracle/oradata/xcky/soe.dbf -tc 4 -s                The following statement failed : GRANT EXECUTE ON dbms_lock TO soe1 : Due to : ORA-01031: insufficient privilegesThe following statement failed : begin                                       $IF DBMS_DB_VERSION.VER_LE_10_2   $THEN     -- Use the default stats collection approach     dbms_stats.gather_schema_stats(                 OWNNAME=> 'SOE1'                 ,ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE                 ,BLOCK_SAMPLE=>TRUE                 ,METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY'                 ,DEGREE=> 4                 ,GRANULARITY=>'ALL'                 ,CASCADE=>TRUE);   $ELSIF DBMS_DB_VERSION.VER_LE_11_2   $THEN      -- Oracle 11g release 2. Emable concurrent stats collection      dbms_output.put_line('database version is less than or equal to 11.2');      DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','WAREHOUSES','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','INVENTORIES','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_INFORMATION','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_DESCRIPTIONS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERENTRY_METADATA','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','CUSTOMERS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ADDRESSES','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDER_ITEMS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','LOGON','INCREMENTAL','TRUE');      DBMS_STATS.GATHER_SCHEMA_STATS('SOE1');   $ELSIF DBMS_DB_VERSION.VER_LE_12   $THEN      -- Oracle 12c. Concurrent Stats collection work slightly different in this release      execute immediate q'[ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'DEFAULT_PLAN']';      execute immediate q'[ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 4 ]';      DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT','MANUAL');      DBMS_STATS.SET_TABLE_PREFS('SOE1','WAREHOUSES','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','INVENTORIES','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_INFORMATION','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_DESCRIPTIONS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERENTRY_METADATA','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','CUSTOMERS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ADDRESSES','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDER_ITEMS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERS','INCREMENTAL','TRUE');      DBMS_STATS.SET_TABLE_PREFS('SOE1','LOGON','INCREMENTAL','TRUE');      DBMS_STATS.GATHER_SCHEMA_STATS('SOE1');   $END end;  : Due to : ORA-20001: Invalid input values for pnameORA-06512: at "SYS.DBMS_STATS", line 26595ORA-06512: at "SYS.DBMS_STATS", line 26751ORA-06512: at line 17============================================|           Datagenerator Run Stats        |============================================Connection Time                        0:00:00.004Data Generation Time                   0:03:18.996DDL Creation Time                      0:03:47.528Total Run Time                         0:07:06.530Rows Inserted per sec                       60,836Data Generated (MB) per sec                    5.0Actual Rows Generated                   13,002,033Post Creation Validation Report===============================The creation of the schema appears to have been unsuccessful. See the following sections for further details.Valid Objects=============Valid Tables : 'ORDERS','ORDER_ITEMS','CUSTOMERS','WAREHOUSES','ORDERENTRY_METADATA','INVENTORIES','PRODUCT_INFORMATION','PRODUCT_DESCRIPTIONS','ADDRESSES','CARD_DETAILS'Valid Indexes : 'PRD_DESC_PK','PROD_NAME_IX','PRODUCT_INFORMATION_PK','PROD_SUPPLIER_IX','PROD_CATEGORY_IX','INVENTORY_PK','INV_PRODUCT_IX','INV_WAREHOUSE_IX','ORDER_PK','ORD_SALES_REP_IX','ORD_CUSTOMER_IX','ORD_ORDER_DATE_IX','ORD_WAREHOUSE_IX','ORDER_ITEMS_PK','ITEM_ORDER_IX','ITEM_PRODUCT_IX','WAREHOUSES_PK','WHS_LOCATION_IX','CUSTOMERS_PK','CUST_EMAIL_IX','CUST_ACCOUNT_MANAGER_IX','CUST_FUNC_LOWER_NAME_IX','ADDRESS_PK','ADDRESS_CUST_IX','CARD_DETAILS_PK','CARDDETAILS_CUST_IX'Valid Views : 'PRODUCTS','PRODUCT_PRICES'Valid Sequences : 'CUSTOMER_SEQ','ORDERS_SEQ','ADDRESS_SEQ','LOGON_SEQ','CARD_DETAILS_SEQ'Valid Code : Invalid Objects (1)================Invalid Tables : Invalid Indexes : Invalid Views : Invalid Sequences : Invalid Code : 'ORDERENTRY'Missing Objects (0)================Missing Tables : Missing Indexes : Missing Views : Missing Sequences : Missing Code : Schema Createdreal    7m51.663suser    3m23.913ssys     0m24.096s[root@oracle bin]# ./charbench -u soe1 -p soe1 -uc 1 -min 10 -max 200 -rt 00:01 -a -s -r scale1_100user.xml

SwingBench官网上除了提供swingbench压测工具外,还提供了其他监控oracle数据库的小工具,例如cpumonitor、dbtimemonitor、monitorDB、datagenerator等

monitorDB工具:

cd /tmp/MonitorDB/bin

修改配置文件monitordb.xml,将Username、Password和ConnectString进行配置后保存,启动程序。

./monitordb

如dbtimemonitor工具:

cd /tmp/dbtimemonitor/bin

修改配置文件databases.xml,将Username、Password和ConnectString进行配置后保存,启动程序。

./dbtimemonitor

如cpumonitor工具:

cd /tmp/cpumonitor/bin

修改配置文件cpu.xml,将HostName、Username和Password修改后保存,启动程序

./cpumonitor


参考资料:

http://blog.csdn.net/xiaofan23z/article/details/7978998

http://www.dominicgiles.com/swingbench.html





附件:http://down.51cto.com/data/2366902
数据 生成 配置 测试 文件 工具 数据库 基准 程序 运行 模式 目录 结果 在线 选择 性能 两个 事务 内存 处理器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网金融监管科技数据 科技与互联网发展 互联网金融 科技金融 掌上梦互联网科技 安控科技rtu产品工业互联网 哈尔滨新华互联网科技学院 广州慧亚互联网科技怎么样 汽车互联网创新科技园 湖北码尼互联网科技有限公司电话 浙江互联网科技研学营 中国航天科技大学国际工业互联网 互联网方面的科技前沿 黑云互联网科技有限公司 皮皮虾互联网科技有限公司 济南小医互联网科技有限公司招聘 全球科技与互联网公司市值变化 马化腾互联网科技教学 互联网的科技体现在哪里 互联网的黑科技实验室 互联网科技公司 互联网佳科技有限公司 科技赋能下的互联网金融 互联网科技有限公司经营范围 善班互联网科技 天扬科技互联网广告 广州优美互联网科技 恒银科技与互联网金融 广州恒生互联网科技有限 济南小医互联网科技有限公司招聘
0