HammerDB is een open-source database benchmark- en prestatietesttool waarmee o.a. de prestaties en schaalbaarheid van oracle databases gemeten kan worden. Meer informatie is te vinden via https://www.hammerdb.com/. Hier is eventueel een nieuwe versie van hammerDB te downloaden.
Alle bestanden die in dit artikel genoemd worden zijn te vinden via link: https://my.hidrive.com/share/gwhu2ftx1d
Dit artikel beschrijft een hammerDB test die is uitgevoerd op de aj001.wolk.care databaseserver op RAC database CA040P in het kader van een migratie naar oracle9c. Er wordt gebruik gemaakt van de OLTP variant, waarmee een order-entry systeem wordt gesimuleerd met een aantal concurrent (virtuele) users. Het aantal (virtuele) users wordt verderop uitgelegd.
Hoewel niet strikt noodzakelijk is tablespace TPCCTAB aangemaakt om de data van deze test te scheiden van de andere data in de database.
CREATE TABLESPACE "TPCCTAB" DATAFILE
SIZE 3093299200
AUTOEXTEND ON NEXT 3093299200 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
Via de eerder genoemde link is file hammerDB.tgz te vinden. Deze file is uitgepakt op de database server en bevat o.a. file D040Pbuild.tcl
#!/bin/tclsh
puts "SETTING CONFIGURATION"
global complete
proc wait_to_complete {} {
global complete
set complete [vucomplete]
if {!$complete} { after 5000 wait_to_complete } else { exit }
}
puts "SETTING CONFIGURATION"
dbset db ora
diset connection system_password <<********>>
diset connection instance D040P
diset tpcc tpcc_def_tab TPCCTAB
diset tpcc tpcc_ol_tab TPCCTAB
vuset logtotemp 1
buildschema
wait_to_complete
vwait forever
puts "BUILD SEQUENCE COMPLETE"
In deze file wordt de ‘hammerDB omgeving’ aangemaakt in database instance D040P . Deze benchmark omgeving bestaat uit 1 Warehouses(s) met Loading Stock - 100000 wat voor onze test voldoende is. De logging ziet er als volgt uit.
[oracle@aj001 hammerDB]$ ./hammerdbcli auto D040Pbuild.tcl
HammerDB CLI v4.0
Copyright (C) 2003-2020 Steve Shaw
Type "help" for a list of commands
The xml is well-formed, applying configuration
SETTING CONFIGURATION
SETTING CONFIGURATION
Database set to Oracle
Changed connection:system_password from manager to <<********>> for Oracle
Changed connection:instance from oracle to D040P for Oracle
Changed tpcc:tpcc_def_tab from tpcctab to TPCCTAB for Oracle
Changed tpcc:tpcc_ol_tab from tpcctab to TPCCTAB for Oracle
Script cleared
Building 1 Warehouses(s) with 1 Virtual User
Ready to create a 1 Warehouse Oracle TPROC-C schema
in database D040P under user TPCC in tablespace TPCCTAB?
Enter yes or no: replied yes
Vuser 1 created - WAIT IDLE
Logging activated
to /tmp/hammerdb.log
Vuser 1:RUNNING
Vuser 1:CREATING TPCC SCHEMA
Vuser 1:CREATING USER tpcc
Vuser 1:CREATING TPCC TABLES
Vuser 1:Loading Item
Vuser 1:Loading Items - 50000
Vuser 1:Loading Items - 100000
Vuser 1:Item done
Vuser 1:Start:Fri Oct 20 13:36:49 CEST 2023
Vuser 1:Loading Warehouse
Vuser 1:Loading Stock Wid=1
Vuser 1:Loading Stock - 50000
Vuser 1:Loading Stock - 100000
Vuser 1:Stock done
Vuser 1:Loading District
Vuser 1:District done
Vuser 1:Loading Customer for DID=1 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=2 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=3 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=4 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=5 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=6 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=7 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=8 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=9 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Customer for DID=10 WID=1
Vuser 1:Customer Done
Vuser 1:Loading Orders for D=1 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=2 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=3 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=4 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=5 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=6 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=7 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=8 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=9 W=1
Vuser 1:Orders Done
Vuser 1:Loading Orders for D=10 W=1
Vuser 1:Orders Done
Vuser 1:End:Fri Oct 20 13:37:14 CEST 2023
Vuser 1:CREATING TPCC INDEXES
Vuser 1:CREATING TPCC STORED PROCEDURES
Vuser 1:GATHERING SCHEMA STATISTICS
Vuser 1:TPCC SCHEMA COMPLETE
Vuser 1:FINISHED SUCCESS
ALL VIRTUAL USERS COMPLETE
[oracle@aj001 hammerDB]$
De benchmark wordt uitgevoerd m.b.v. script D040Prun.tcl en simuleert een warehous order entry sytsteem met foreach z { 1 2 4 8 16 32 64 128 150 175 } concurrent users.
#!/bin/tclsh
proc runtimer { seconds } {
set x 0
set timerstop 0
while {!$timerstop} {
incr x
after 1000
if { ![ expr {$x % 60} ] } {
set y [ expr $x / 60 ]
puts "Timer: $y minutes elapsed"
}
update
if { [ vucomplete ] || $x eq $seconds } { set timerstop 1 }
}
return
}
puts "SETTING CONFIGURATION"
dbset db ora
diset connection system_password 9aY6#ach
diset connection instance D040P
diset tpcc ora_driver timed
diset tpcc rampup 1
diset tpcc timeprofile true
vuset logtotemp 1
vuset showoutput 1
vuset unique 1
loadscript
puts "SEQUENCE STARTED"
foreach z { 1 2 4 8 16 32 64 128 150 175 } {
puts "$z VU D040P"
vuset vu $z
vucreate
vurun
runtimer 900
vudestroy
after 5000
}
puts "TEST SEQUENCE COMPLETE"grep
Starten van de benchmark gaat met commando ./hammerdbcli auto D040Prun.tcl. In de output is te zien dat er een poging gedaan wordt om 1.000.000 transacties per (virtuele) user uit te voeren.

De logging wordt naar het scherm maar ook naar directory /tmp weggeschreven. Na afloop van de run kan m.b.v. het grep commando het aantal ‘New Orders Per Minute’ uit de logging gehaald worden.

Door deze op t nemen in de Excel file in de eerder genoemde directory (link) kan je verschillende runs in de grafiek vergelijken.

