牛刀小试--Oracle Swingbench 压力测试

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来学习 Oracle Swingbench 压力测试,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

1、Swingbench 简介

Swingbench是一个免费的负载生成器和基准测试工具,其支持Oracle数据库(11g12c18c19c)。Swingbench的开发目的主要是展示RAC的负载和测试,也可用于单实例环境。下载地址为 http://www.dominicgiles.com/downloads.html

Swingbench模拟了一套订单业务逻辑,通过创建SOE用户,模拟产品和订单业务,可以自定义数据量的大小,本次测试将生成50GB的业务数据。


2.下载 swingbench 工具

我们使用如下 github 地址下载:https://github.com/domgiles/swingbench-public/releases/tag/production

如果有需要可下载 java JDK https://www.oracle.com/java/technologies/downloads/

安装Swingbench 2.52.6,运行环境需要是Java 8及以上版本,Oracle 19c 默认使用 JDK 1.8版本,如果系统 JDK 版本为1.8以下的版本,则需要将JDK版本升级到1.8及以上版本。上传安装包解压即可。

上传后验证文件完整性并解压

cksum swingbenchlatest.zip
1679811525 41211958 swingbenchlatest.zip

unzip swingbenchlatest.zip














cd swingbenchls -l-rw-rw-rw- 1 oracle oinstall 6163 Mar 16 19:01 README.txtdrwxr-xr-x 3 oracle oinstall  283 Mar 15 21:30 bindrwxr-xr-x 2 oracle oinstall 4096 Mar 16 03:29 configsdrwxr-xr-x 2 oracle oinstall  112 Mar 14 05:14 launcherdrwxr-xr-x 3 oracle oinstall  237 Mar 15 20:17 libdrwxr-xr-x 2 oracle oinstall    6 Mar 3  2010 logdrwxr-xr-x 3 oracle oinstall   50 Mar 16 18:05 sourcedrwxr-xr-x 2 oracle oinstall 8192 Mar 15 20:17 sqldrwxr-xr-x 2 oracle oinstall   61 Nov 7  2018 utilsdrwx------ 3 oracle oinstall 4096 Mar 14 05:39 winbindrwxr-xr-x 2 oracle oinstall  155 Mar 14 05:23 wizardconfigs

3.数据生成

进入 swingbench/bin 目录,Linux 系统在 bin 目录执行(需要调出图形化界面)

不然会报错Exception: java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "AWT-EventQueue-0"


使用 xshell






# echo $DISPLAYlocalhost:11.0$ export DISPLAY=localhost:11.0cd /home/oracle/tmp/swingbench/bin./oewizard

B.     选择version2.0 ,点击next;


C.     选择创建数据

填写连接串,格式 SCANIP:Port/service_names
//192.168.221.75:1770/jiekedb sys 用户密码

可以选择默认用户密码及表空间,也可以选择现有表空间,如OLTP,这里默认,点击 next


如下图选择普通表空间:


为基准测试选择一个预先配置的大小。或者指定你自己的。选项1 = 1GB。根据你的Buffer Cache的大小,我们建议模式大小为 CPU 密集型工作负载为 6.9 GB, I/O 密集型工作负载至少为 322.7GB 数据。


由于测试环境配置较低,这里选择自定义 50 GB 的数据。如下图,使用不同的数据量对表空间的要求也不尽相同,我这里选择 50GB 的数据,需要表空间大小160GB,临时表空间 30G


并行度调整,默认为 16 可根据个人机器自行调整,我这里选择 40


到此处,根据上图去创建需要的表空间,和调整临时表空间大小,并将日志组大小调大,例如每个实例5*10g


















create tablespace SOE datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;
col FILE_NAME for a89col TABLESPACE_NAME for a8selectFILE_ID,FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024/1024 GB from dba_temp_files;alter database tempfile 1 resize 32767m;
--Redo 日志组由原来的各两组变成四组。select GROUP#,THREAD#,BYTES/1024/1024 mb,status from v$log;ALTER DATABASE ADD  LOGFILE THREAD 1 ('+DATA','+DATA') size 2048M;ALTER DATABASE ADD  LOGFILE THREAD 2 ('+DATA','+DATA') size 2048M;

当上面操作都完成后,重新执行./oewizard,可以看到已经选择了数据文件。


点击完成后则开始创建数据,新建用户,表,序列、索引、约束等对象,并收集统计信息。50G 的数据创建还是比较慢的,还是静静的等待完成吧。

由于是测试虚拟机器,我这里创建 50G 的数据 40 个并行,也大概需要 52 分钟,还是比较慢的。























































SQL> col owner for a10SQL> col table_name for a30SQL> selectowner,table_name,TABLESPACE_NAME,NUM_ROWS from dba_tables where owner='SOE'order by num_rows desc;OWNER      TABLE_NAME                     TABLESPACE_NAME                  NUM_ROWS---------------------------------------- ------------------------------ ----------SOE        ORDER_ITEMS                    SOE                             359864756SOE        LOGON                          SOE                             119149200SOE        ADDRESSES                      SOE                              75000000SOE        CARD_DETAILS                   SOE                              75000000SOE        ORDERS                         SOE                              71489500SOE        CUSTOMERS                      SOE                              50000000SOE        INVENTORIES                    SOE                                901018SOE        PRODUCT_INFORMATION            SOE                                  1000SOE        PRODUCT_DESCRIPTIONS           SOE                                  1000SOE        WAREHOUSES                     SOE                                  1000SOE        ORDERENTRY_METADATA            SOE                                   0col INDEX_NAME for a30select owner,table_name,INDEX_NAME,INDEX_TYPE,TABLESPACE_NAME from dba_indexes where owner='SOE';OWNER      TABLE_NAME                     INDEX_NAME                     INDEX_TYPE                  TABLESPACE_NAME---------------------------------------- --------------------------------------------------------- ---------------SOE        CUSTOMERS                      CUSTOMERS_PK                   NORMAL/REV                  SOESOE        CUSTOMERS                     CUST_ACCOUNT_MANAGER_IX       NORMAL                      SOESOE        CUSTOMERS                      CUST_DOB_IX                    NORMAL                      SOESOE        PRODUCT_DESCRIPTIONS           PRD_DESC_PK                    NORMAL                      SOESOE        INVENTORIES                    INVENTORY_PK                   NORMAL                      SOESOE        ADDRESSES                      ADDRESS_PK                     NORMAL/REV                  SOESOE        WAREHOUSES                     WHS_LOCATION_IX                NORMAL                      SOESOE        ORDERS                         ORD_SALES_REP_IX               NORMAL/REV                  SOESOE        CARD_DETAILS                   CARD_DETAILS_PK                NORMAL/REV                  SOESOE        INVENTORIES                    INV_PRODUCT_IX                 NORMAL                      SOESOE        INVENTORIES                    INV_WAREHOUSE_IX               NORMAL                      SOESOE        WAREHOUSES                     WAREHOUSES_PK                  NORMAL                      SOESOE        ORDERS                         ORD_CUSTOMER_IX                NORMAL/REV                  SOESOE        ORDER_ITEMS                    ORDER_ITEMS_PK                 NORMAL/REV                  SOESOE        ORDERS                         ORD_ORDER_DATE_IX              NORMAL/REV                  SOESOE        ORDERS                         ORDER_PK                       NORMAL/REV                  SOESOE        PRODUCT_INFORMATION            PRODUCT_INFORMATION_PK         NORMAL                      SOESOE        CUSTOMERS                     CUST_FUNC_LOWER_NAME_IX        FUNCTION-BASED  NORMAL       SOESOE        ORDER_ITEMS                    ITEM_ORDER_IX                  NORMAL/REV                  SOESOE        PRODUCT_INFORMATION            PROD_CATEGORY_IX               NORMAL                      SOESOE        ORDERS                         ORD_WAREHOUSE_IX               NORMAL                      SOESOE        CARD_DETAILS                   CARDDETAILS_CUST_IX            NORMAL                      SOESOE        ADDRESSES                      ADDRESS_CUST_IX                NORMAL/REV                  SOESOE        PRODUCT_INFORMATION            PROD_SUPPLIER_IX               NORMAL                      SOESOE        ORDER_ITEMS                    ITEM_PRODUCT_IX                NORMAL/REV                  SOESOE        CUSTOMERS                      CUST_EMAIL_IX                  NORMAL                      SOESOE        PRODUCT_DESCRIPTIONS           PROD_NAME_IX                   NORMAL                      SOE
27 rows selected.

点击 ok,完成数据创建,这样就创建成功了。

接下来调整参数,重启数据库就可以测试了,调整参数如下:



























alter system set processes=4000 scope=spfile;alter system set db_files=2500 scope=spfile;alter system set standby_file_management='AUTO';alter system set control_file_record_keep_time=30;alter system set fast_start_mttr_target=120 scope=spfile;alter system set open_links_per_instance=10 scope=spfile;alter system set session_cached_cursors=600 scope=spfile; alter system set archive_lag_target=1800 scope=spfile;alter system set open_cursors=1500 scope=spfile;alter system set open_links=10 scope=spfile;alter system set undo_retention=10800 scope=spfile;alter system set lock_sga=FALSE scope=spfile;alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;alter system set resource_manager_plan='' scope=spfile;alter system set statistics_level='TYPICAL' scope=spfile;alter system set timed_statistics=TRUE scope=spfile;alter system set undo_management='AUTO' scope=spfile;alter system set db_cache_advice='OFF' scope=spfile;alter system set audit_trail='NONE' scope=spfile;alter system set audit_sys_operations=false scope=spfile;alter system set "_gc_policy_time"=0 scope=spfile;alter system set "_sort_elimination_cost_ratio"=0 scope=spfile;alter system set "_use_adaptive_log_file_sync"= FALSE scope=spfile;alter system set "result_cache_max_size"= 0 scope=spfile;alter system set use_large_pages=only scope=spfile;alter system set "_optimizer_use_feedback"=false scope=spfile;
调整好参数后,重启数据库
srvctl stop database -d jxrt4db
srvctl start database -d jxrt4db
srvctl status database -d jxrt4db



Instance jiekedb1 is running on node jieke19cr1Instance jiekedb2 is running on node jieke19cr2

3.测试







cd /home/oracle/tmp/swingbench/bin执行./swingbenchApplication :    SwingbenchAuthor     :         Dominic GilesVersion    : 2.6.0.1163

进入 Swingbench/bin目录运行 swingbench,执行测试,修改数据库连接串、用户连接数设置,勾选要测试的选项,开始测试。

填入要监控的主机信息,对主机进行监控,测试一下是否能连接成功,上述都配置完以后,点击绿色的开始按钮,开始测试,当测试的图形平稳后截图。


4.总结

压测总共使用 23 分钟,500 并发会话连接,大约有 350 活跃会话。我们需要观察 TPS(吞吐量)、IOPS(每秒读写次数)、RT(响应时间)CPU等数据。如下:

TPS4628
RT2419
CPU100%
IOPS53821


好了,这次就先这样吧,欢迎一起来讨论。全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的视频号,一起学习新知识!!!


————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————



Oracle 表碎片检查及整理方案

OGG|Oracle GoldenGate 基础

2021 年公众号历史文章合集整理

2020 年公众号历史文章合集整理

我的 2021 年终总结和 2022 展望

Oracle 19c  RAC 遇到的几个问题

利用 OGG 迁移 Oracle11g 到 19C

OGG|Oracle GoldenGate 微服务架构

Oracle 查询表空间使用率超慢问题一则

国产数据库|TiDB 5.4 单机快速安装初体验

Oracle ADG 备库停启维护流程及增量恢复

Linux 环境搭建 MySQL8.0.28 主从同步环境



请使用浏览器的分享功能分享到微信等