環境
安裝 sqlplus
wget
unzip -q instantclient-basic-linux.x64-19.30.0.0.0dbru.zip
uznip -q instantclient-sqlplus-linux.x64-19.30.0.0.0dbru.zip
sudo mv instantclient_19_30 /usr/local/sqlplus
sudo mkdir -p /usr/local/sqlplus/lib
cd /usr/local/sqlplus
# 進入你那個充滿 .so 的目錄後執行:
ln -sf $(pwd)/libclntsh.so ./lib/libclntsh.so
ln -sf $(pwd)/libclntsh.so.19.1 ./lib/libclntsh.so.19.1
ln -sf $(pwd)/libnnz19.so ./lib/libnnz19.so
ln -sf $(pwd)/libociei.so ./lib/libociei.so
ln -sf $(pwd)/libclntshcore.so.19.1 ./lib/libclntshcore.so.19.1
export ORACLE_HOME=/usr/local/sqlplus
# 同時包含根目錄與 lib 目錄,確保 HammerDB 不管怎麼找都找得到
export LD_LIBRARY_PATH=$ORACLE_HOME:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$ORACLE_HOME:$PATH
- /usr/local/sqlplus/network/admin/tnsnames.ora
db151 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.1.151)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = db)
)
)
-- 以 SYSDBA 身份執行
CREATE USER masterdba IDENTIFIED BY "1qaz@WSX3edc" ACCOUNT UNLOCK;
-- 賦予必要的權限
GRANT CONNECT, RESOURCE, DBA TO masterdba;
ALTER USER masterdba QUOTA UNLIMITED ON USERS;
安裝 hammerdb
sudo apt install libtcl8.6 libtk8.6 unixodbc unixodbc-dev
sudo apt install tcl tk
進行壓力測試
dbset db ora
diset connection system_user masterdba
diset connection system_password Aa1234..
diset connection instance db151
diset connection instance //172.30.1.151:1521/db151
vudestroy
buildschema
dbset db ora
# 設定為計時模式 (Timed)
diset tpcc ora_driver timed
# 設定測試執行時間 (分鐘),例如 2 分鐘
diset tpcc duration 1
# 設定預熱時間 (分鐘),確保 Buffer Cache 已填滿
diset tpcc rampup 1
# 載入腳本:
loadscript
vudestroy
vuset vu 1
vucreate
vurun
hammerdb>vudestroy
vudestroy success
hammerdb>vuset vu 1
hammerdb>vucreate
Vuser 1 created MONITOR - WAIT IDLE
Vuser 2 created - WAIT IDLE
2 Virtual Users Created with Monitor VU
hammerdb>vurun
Vuser 1:RUNNING
Vuser 1:DBVersion:19.0.0.0.0
Vuser 1:Beginning rampup time of 1 minutes
Vuser 2:RUNNING
Vuser 2:Processing 10000000 transactions with output suppressed...
Vuser 1:Rampup 1 minutes complete ...
Vuser 1:Rampup complete, Taking start AWR snapshot.
Vuser 1:Start Snapshot 73 taken at 13 APR 2026 08:48 of instance db151 (1) of database DB (1994028977)
Vuser 1:Timing test period of 1 in minutes
Vuser 1:1 ...,
Vuser 1:Test complete, Taking end AWR snapshot.
Vuser 1:End Snapshot 74 taken at 13 APR 2026 08:49 of instance db151 (1) of database DB (1994028977)
Vuser 1:Test complete: view report from SNAPID 73 to 74
Vuser 1:1 Active Virtual Users configured
Vuser 1:TEST RESULT : System achieved 4132 NOPM from 8873 Oracle TPM
Vuser 2:FINISHED SUCCESS
Vuser 1:FINISHED SUCCESS
ALL VIRTUAL USERS COMPLETE
Benchmark Run jobid=69DC3D3B64F403E233732313
hammerdb>
- TPM (Transactions Per Minute): 8873(這是 Oracle 每分鐘處理的所有交易總數)。
- NOPM (New Orders Per Minute): 4132(這是 TPROC-C 核心指標,代表每分鐘完成的「新訂單」交易,通常用來跨平台比較)。
- AWR Snapshot: 自動觸發了 Snapshots 73 到 74。
操作方式
重新建立測試資料
# drop user tpcc cascade;
hammerdb>vudestroy
vudestroy success
hammerdb>buildschema
Script cleared