Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Swingbench is a free load generator (and benchmarks) designed by Dominic Giles to stress test an Oracle database (10g,11g,12c). 

In this example, we will use charbench which is the command line interface to Swingbench.

1. Download Swingbench

No Format
su - oracle
mkdir software
cd software
wget http://dominicgiles.com/swingbench/swingbench25909.zip

2. Unzip the software

Swingbench is a free load generator (and benchmarks) designed by Dominic Giles to stress test an Oracle database (10g,11g,12c). 

In this example, we will use charbench which is the command line interface to Swingbench.

1. Download Swingbench

No Format
su - oracle
mkdir software
cd software
wget http://dominicgiles.com/swingbench/swingbench25909.zip

2. Unzip the software

No Format
unzip swingbench25909.zip
Archive:  swingbench25909.zip
   creating: swingbench/
  inflating: swingbench/.DS_Store    
   creating: swingbench/bin/
  inflating: swingbench/bin/bmcompare  
  inflating: swingbench/bin/ccconfig.xml  
  inflating: swingbench/bin/ccwizard  
  inflating: swingbench/bin/ccwizard.xml  
  inflating: swingbench/bin/charbench  
  inflating: swingbench/bin/clusteroverview  
  inflating: swingbench/bin/clusteroverview.xml  
  inflating: swingbench/.DS_Store  bin/coordinator  
   creating: swingbench/bin/data/
  inflating: swingbench/bin/bmcomparedata/1000mostpopularadjectives.txt  
  inflating: swingbench/bin/data/ccconfig1000mostpopularwords.xmltxt  
  inflating: swingbench/bin/data/ccwizard100mostpopularwords.txt  
  inflating: swingbench/bin/ccwizarddata/catalogue.xmltxt  
  inflating: swingbench/bin/data/charbenchcounties.txt  
  inflating: swingbench/bin/data/clusteroverviewcountries.txt  
  inflatingextracting: swingbench/bin/data/clusteroverviewdomains.xmltxt  
  inflating: swingbench/bin/coordinatordata/emails.txt  
   creatinginflating: swingbench/bin/data/lowerfirstnames.txt  
  inflating: swingbench/bin/data/1000mostpopularadjectiveslowerlastnames.txt  
  inflating: swingbench/bin/data/1000mostpopularwordsnames.txt  
  inflating: swingbench/bin/data/100mostpopularwordsnls.txt  
  inflating: swingbench/bin/data/catalogueproductids.txt  
  inflating: swingbench/bin/data/countiestitles.txt  
  inflating: swingbench/bin/data/countriestowns.txt  
 extracting inflating: swingbench/bin/data/domains.txtminibench  
  inflating: swingbench/bin/data/emails.txtoewizard  
  inflating: swingbench/bin/data/lowerfirstnamesoewizard.txtxml  
  inflating: swingbench/bin/data/lowerlastnames.txtshwizard  
  inflating: swingbench/bin/data/namesshwizard.txtxml  
  inflating: swingbench/bin/data/nls.txtswingbench  
  inflating: swingbench/bin/data/productids.txtswingconfig.xml  
   inflatingcreating: swingbench/bin/data/titles.txtconfigs/
    inflating: swingbench/binconfigs/data/townsccconfig.txtxml  
  inflating: swingbench/binconfigs/minibenchoeconfig.xml  
  inflating: swingbench/binconfigs/oewizardshconfig.xml  
  inflating: swingbench/binconfigs/oewizardspconfig.xml  
  inflating: swingbench/binconfigs/shwizardstresstest.xml  
  inflating: swingbench/binconfigs/shwizardswingconfigv1.xml  
  inflating: swingbench/bin/swingbench  
  inflating: swingbench/bin/swingconfigconfigs/swingconfigv2.xml  
   creating: swingbench/configslauncher/
  inflating: swingbench/configslauncher/ccconfigcommons-launcher.xmljar  
  inflating: swingbench/configslauncher/oeconfiglauncher.xmlproperties  
  inflating: swingbench/configslauncher/shconfiglauncher.xml  
  inflating: swingbench/configslauncher/spconfigLauncherBootstrap.xmlclass  
   inflatingcreating: swingbench/configslib/stresstest.xml
    inflatingcreating: swingbench/configs/swingconfigv1.xmllib/launcher/
    inflating: swingbench/configs/swingconfigv2.xmllib/launcher/ant-launcher.jar  
   creatinginflating: swingbench/lib/launcher/ant.jar  
  inflating: swingbench/lib/launcher/commons-launcherxercesImpl.jar  
  inflating: swingbench/lib/launcher/launcherxml-apis.propertiesjar  
  inflating: swingbench/launcherlib/launcherojdbc6.xmljar  
  inflating: swingbench/launcherlib/LauncherBootstrapons.classjar  
   creatinginflating: swingbench/lib/simplefan.jar    creating: swingbench/lib/launcher/
  inflating: swingbench/lib/launcher/ant-launcherswingbench.jar  
  inflating: swingbench/lib/launcher/antucp.jar  
   inflatingcreating: swingbench/lib/launcher/xercesImpl.jar  log/
  inflating: swingbench/lib/launcher/xml-apis.jarREADME.txt   
   inflatingcreating: swingbench/libsource/ojdbc6.jar
    inflating: swingbench/libsource/ons.jarantbuild  
  inflating: swingbench/libsource/simplefanbuild.jarxml  
   inflatingcreating: swingbench/source/libcom/swingbench.jar
    inflatingcreating: swingbench/lib/ucp.jarsource/com/dom/
     creating: swingbench/log/
  inflating: swingbench/README.txtsource/com/dom/benchmarking/
      creating: swingbench/source/
  inflating: swingbench/source/antbuild  
  inflating: swingbench/source/build.xmlcom/dom/benchmarking/swingbench/
     creating: swingbench/source/com/
   creating: swingbench/source/com/domdom/benchmarking/swingbench/dsstransactions/
   creatinginflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/PeriodToPeriodComparison.java  
 creating inflating: swingbench/source/com/dom/benchmarking/swingbench/
   creating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/PeriodToPeriodComparison.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactionsdsstransactions/ProductSalesRollupCube.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesByCountryForGivenYear.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesByQuarterCountry.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesCubeByMonth.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesHistory.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesMovingAverage.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SalesRollupByMonth.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/SimpleLookUp.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/dsstransactions/TopSalesWithinQuarter.java  
   creating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/BrowseAndUpdateOrders.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/BrowseProducts.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/NewCustomerProcess.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/NewCustomerProcessV2.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/NewOrderProcess.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/OrderEntryProcess.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/ProcessOrders.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/SalesRepsOrdersQuery.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/UpdateCustomerDetailsV2.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/WarehouseActivityQuery.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/plsqltransactions/WarehouseOrdersQuery.java  
   creating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/newStoredProcedure.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/StoredProcedure1.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/StoredProcedure2.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/StoredProcedure3.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/StoredProcedure4.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/StoredProcedure5.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/storedprocedures/StoredProcedure6.java  
   creating: swingbench/source/com/dom/benchmarking/swingbench/stresstest/
  inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstest/StressTest.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstest/StressTestDelete.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstest/StressTestInsert.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstest/StressTestSelect.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/stresstest/StressTestUpdate.java  
   creating: swingbench/source/com/dom/benchmarking/swingbench/transactions/
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/BrowseAndUpdateOrders.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/BrowseProducts.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/NewCustomerProcess.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/NewOrderProcess.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/OrderEntryProcess.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/ProcessOrders.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/SalesRepsOrdersQuery.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/WarehouseActivityQuery.java  
  inflating: swingbench/source/com/dom/benchmarking/swingbench/transactions/WarehouseOrdersQuery.java  
   creating: swingbench/source/com/mike/
   creating: swingbench/source/com/mike/CallingCircle/
  inflating: swingbench/source/com/mike/CallingCircle/CallingCircleLineIdentifier.java  
  inflating: swingbench/source/com/mike/CallingCircle/CallingCircleProcess.java  
  inflating: swingbench/source/com/mike/CallingCircle/CallingLineIdentifier.java  
  inflating: swingbench/source/com/mike/CallingCircle/CustomerAccount.java  
  inflating: swingbench/source/com/mike/CallingCircle/CustomerCallingLineIdentifier.java  
  inflating: swingbench/source/com/mike/CallingCircle/NewCallingCircleProcess.java  
  inflating: swingbench/source/com/mike/CallingCircle/RetrieveHistoryProcess.java  
  inflating: swingbench/source/com/mike/CallingCircle/UpdateCallingCircleProcess.java  
   creating: swingbench/sql/
  inflating: swingbench/sql/analyzecc.sql  
  inflating: swingbench/sql/CreAppPkgBdy.sql  
  inflating: swingbench/sql/CreAppPkgHdr.sql  
  inflating: swingbench/sql/CreAppPrc.sql  
  inflating: swingbench/sql/CreData1.sql  
  inflating: swingbench/sql/CreData2.sql  
  inflating: swingbench/sql/CreData3.sql  
  inflating: swingbench/sql/CreDataPkgBdy.sql  
  inflating: swingbench/sql/CreDataPkgHdr.sql  
  inflating: swingbench/sql/CreInds.sql  
 extracting: swingbench/sql/CreInds2.sql  
  inflating: swingbench/sql/CreMiscPkgBdy.sql  
  inflating: swingbench/sql/CreMiscPkgHdr.sql  
  inflating: swingbench/sql/CreTabs.sql  
  inflating: swingbench/sql/CreTspc.sql  
  inflating: swingbench/sql/CreUser.sql  
  inflating: swingbench/sql/DropTabs.sql  
  inflating: swingbench/sql/DropUser.sql  
  inflating: swingbench/sql/GenData.sql  
  inflating: swingbench/sql/grantv$access.sql  
  inflating: swingbench/sql/oepostinstall.sql  
  inflating: swingbench/sql/sh.xml   
  inflating: swingbench/sql/sh_dgcreateconstraints_with_indexes.sql  
  inflating: swingbench/sql/shdg_analyzeschema.sql  
  inflating: swingbench/sql/shdg_analyzeschema2.sql  
  inflating: swingbench/sql/shdg_createconstraints.sql  
  inflating: swingbench/sql/shdg_createloadviews.sql  
  inflating: swingbench/sql/shdg_createtablespace.sql  
  inflating: swingbench/sql/shdg_createuser.sql  
  inflating: swingbench/sql/shdg_drop.sql  
  inflating: swingbench/sql/shdg_drop_load_views.sql  
  inflating: swingbench/sql/shdg_drop_range.sql  
  inflating: swingbench/sql/shdg_droptablespace.sql  
  inflating: swingbench/sql/shdg_dropuser.sql  
  inflating: swingbench/sql/shdg_indexes.sql  
  inflating: swingbench/sql/shdg_indexes_none.sql  
  inflating: swingbench/sql/shdg_indexes_part.sql  
  inflating: swingbench/sql/shdg_indexes_part_pk.sql  
  inflating: swingbench/sql/shdg_indexes_pk.sql  
  inflating: swingbench/sql/shdg_localindexes.sql  
  inflating: swingbench/sql/shdg_mergepartitions.sql  
  inflating: swingbench/sql/shdg_modify_indexes.sql  
  inflating: swingbench/sql/shdg_tables.sql  
  inflating: swingbench/sql/shdg_tablesrange.sql  
  inflating: swingbench/sql/shdg_tidyup.sql  
  inflating: swingbench/sql/shdg_timedimension.sql  
  inflating: swingbench/sql/soe.xml  
  inflating: swingbench/sql/soe2.xml  
  inflating: swingbench/sql/soedg_modify_indexes.sql  
  inflating: swingbench/sql/soedganalyzeschema.sql  
  inflating: swingbench/sql/soedganalyzeschema2.sql  
  inflating: swingbench/sql/soedgconstraints.sql  
  inflating: swingbench/sql/soedgconstraints2.sql  
 extracting: swingbench/sql/soedgconstraints_none_2.sql  
  inflating: swingbench/sql/soedgconstraints_pk_2.sql  
  inflating: swingbench/sql/soedgcreatepartitionedtables.sql  
  inflating: swingbench/sql/soedgcreatetables.sql  
  inflating: swingbench/sql/soedgcreatetables2.sql  
  inflating: swingbench/sql/soedgcreatetablescomposite2.sql  
  inflating: swingbench/sql/soedgcreatetableshash2.sql  
  inflating: swingbench/sql/soedgcreatetablespace.sql  
  inflating: swingbench/sql/soedgcreateuser.sql  
  inflating: swingbench/sql/soedgdrop.sql  
  inflating: swingbench/sql/soedgdrop2.sql  
  inflating: swingbench/sql/soedgindexes.sql  
  inflating: swingbench/sql/soedgindexes2.sql  
  inflating: swingbench/sql/soedgindexes_none_2.sql  
  inflating: swingbench/sql/soedgindexes_pk_2.sql  
  inflating: swingbench/sql/soedgpackage.sql  
  inflating: swingbench/sql/soedgpackage2_body.sql  
  inflating: swingbench/sql/soedgpackage2_header.sql  
  inflating: swingbench/sql/soedgsequences.sql  
  inflating: swingbench/sql/soedgsequences2.sql  
  inflating: swingbench/sql/soedgsetupmetadata.sql  
  inflating: swingbench/sql/soedgsqlset.sql  
  inflating: swingbench/sql/soedgviews.sql  
  inflating: swingbench/sql/soedroptablespace.sql  
  inflating: swingbench/sql/soedropuser.sql  
  inflating: swingbench/sql/storedprocedures.sql  
  inflating: swingbench/swingbenchFAQ.pdf  
   creating: swingbench/winbin/
  inflating: swingbench/winbin/bmcompare.bat  
  inflating: swingbench/winbin/ccwizard.bat  
  inflating: swingbench/winbin/ccwizard.xml  
  inflating: swingbench/winbin/charbench.bat  
  inflating: swingbench/winbin/clusteroverview.bat  
  inflating: swingbench/winbin/clusteroverview.xml  
  inflating: swingbench/winbin/coordinator.bat  
   creating: swingbench/winbin/data/
  inflating: swingbench/winbin/data/1000mostpopularadjectives.txt  
  inflating: swingbench/winbin/data/1000mostpopularwords.txt  
  inflating: swingbench/winbin/data/100mostpopularwords.txt  
  inflating: swingbench/winbin/data/catalogue.txt  
  inflating: swingbench/winbin/data/counties.txt  
  inflating: swingbench/winbin/data/countries.txt  
 extracting: swingbench/winbin/data/domains.txt  
  inflating: swingbench/winbin/data/emails.txt  
  inflating: swingbench/winbin/data/lowerfirstnames.txt  
  inflating: swingbench/winbin/data/lowerlastnames.txt  
  inflating: swingbench/winbin/data/names.txt  
  inflating: swingbench/winbin/data/nls.txt  
  inflating: swingbench/winbin/data/productids.txt  
  inflating: swingbench/winbin/data/titles.txt  
  inflating: swingbench/winbin/data/towns.txt  
  inflating: swingbench/winbin/minibench.bat  
  inflating: swingbench/winbin/oewizard.bat  
  inflating: swingbench/winbin/oewizard.xml  
  inflating: swingbench/winbin/shwizard.bat  
  inflating: swingbench/winbin/shwizard.xml  
  inflating: swingbench/winbin/swingbench.bat  
  inflating: swingbench/winbin/swingconfig.xml  

3. Move the swingbench directory

No Format
cd ~oracle
mv software/swingbench .

4. Configure swingbench

a. Change the login defaults for oewizard.xml

 

No Format
cd ~oracle/swingbench/bin
vi oewizard.xml

Change the defaults to the following:

Code Block
languagexml
   <DefaultParameters>
      <Parameter Key="datatablespacesexists" Value="true"/>
      <Parameter Key="password" Value="oe"/>
      <Parameter Key="username" Value="oe"/>
      <Parameter Key="datafile" Value="+DATA"/>
      <Parameter Key="userexists" Value="true"/>
      <Parameter Key="connectionstring" Value="//source/orcl"/>
      <Parameter Key="connectiontype" Value="thin"/>
      <Parameter Key="onlydropuser" Value="false"/>
      <Parameter Key="operation" Value="create"/>
      <Parameter Key="tablespace" Value="USERS"/>
      <Parameter Key="dbausername" Value="sys as sysdba"/>
      <Parameter Key="dbapassword" Value="oracle"/>
      <Parameter Key="output" Value="Verbose"/>
   </DefaultParameters>

b. Change the login details for oeconfig.xml

No Format
cd ~oracle/swingbench/configs/
vi oeconfig.xml
No Format
   <Connection>
      <UserName>oe</UserName>
      <Password>oe</Password>
      <ConnectString>//source/orcl</ConnectString>
      <DriverType>Oracle jdbc Driver</DriverType>
   </Connection>

5. Create the initial swingbench tables and load them with data. This takes about 25 minutes to run. While it is running, there is no output.

No Format
cd ~oracle/swingbench/bin
./oewizard -cl -create -scale 1 -u oe -p oe -ts users -tc 16 -s 
 
============================================
|           Datagenerator Run Stats        |
============================================
Connection Time                        0:00:00.005
Data Generation Time                   0:22:58.270
DDL Creation Time                      0:02:10.680
Total Run Time                         0:25:08.959
Rows Inserted per sec                        8,784
Data Generated (MB) per sec                    0.7
Actual Rows Generated                   13,004,927

Post Creation Validation Report
===============================
The schema appears to have been created successfully.
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 : 'ORDERENTRY'
Schema Created
Note

The username is: oe

The password is: oe

The tablespace is: users

 

6. Download and install scripts

No Format
cd ~oracle/swingbench
wget http://ww2.dbvisit.com/download/files/external/sw_generate_load.sh
chmod 750 sw_generate_load.sh

 

...

data/titles.txt  
  inflating: swingbench/winbin/data/towns.txt  
  inflating: swingbench/winbin/minibench.bat  
  inflating: swingbench/winbin/oewizard.bat  
  inflating: swingbench/winbin/oewizard.xml  
  inflating: swingbench/winbin/shwizard.bat  
  inflating: swingbench/winbin/shwizard.xml  
  inflating: swingbench/winbin/swingbench.bat  
  inflating: swingbench/winbin/swingconfig.xml