1. 程式人生 > >ORACLE 免費壓力測試工具--hammerora的使用過程

ORACLE 免費壓力測試工具--hammerora的使用過程

作者:Fenng
日期:Mar 14 2004 (v0.13)
出處:http://www.dbanotes.net
版本:0.93

本文簡介

介紹如何利用開源工具實現Oracle資料庫環境中的TPC-C.對DBA、開發人員、BI實施者有一定的參考價值.

引言描述

設想一下這樣一種情況:

您正在負責公司的一個OLTP型別的資料庫專案,面臨資料庫伺服器選型的問題:如何選擇硬體才能滿足產品環境的業務要求? 這個事情是“拍腦袋” 能決定的嗎?

不可否認,硬體選型是一門藝術,選擇合適的硬體,能給公司節省大筆的費用,選擇不能滿足業務需求的伺服器產品,不但花了冤枉錢,還會對將來的業務產生影響。

可能大家首先會想到參考伺服器的TPC-C的資訊。提到TPC-C,可能很多人對此都感到既熟悉又陌生,因為經常聽人說起,但是具體的問下去,能說清楚的又沒有多少人,而且,從大家口中得到的還不盡相同。那麼什麼是TPC/TPC-C這些都代表什麼意思呢?

什麼是TPC?

TPC(Transaction Processing Performance Council,事務處理效能委員會)是一個非盈利性的組織,其官方站點在http://www.tpc.org 。其宗旨是為了制定商務應用基準程式(Benchmark)的標準規範,提供效能和價格度量,並管理測試結果的釋出。在業界極其具有權威性。

TPC的基準程式的標準規範(Standard Specification)是對公共開放的,可以在官方站點上得到,但是TPC卻不提供基準程式的程式碼。任何軟硬體廠商或其它測試者可以根據標準規範,最優地構建自己待測的系統。為保證測試結果的客觀性,被測試者(通常是廠家)必須提交給TPC一套完整的報告(Full Disclosure Report),包括被測系統的詳細配置、分類價格和包含五年維護費用在內的總價格。該報告必須由TPC授權的稽核員核實(TPC本身並不做審計)。

什麼是tpmC?

先說一下TPC-C,TPC-C是聯機事務處理(on-line transaction processing , OLTP)的基準程式。TPC-C模擬一個批發商的貨物管理環境。TPC-C使用三種性能和價格度量,其中效能由TPC-C吞吐率衡量,單位是tpmC。tpm是transactions per minute的簡稱;C指TPC中的C基準程式。它的定義是每分鐘內系統處理的新訂單個數。

瞭解了這些內容,您可能會想:我們公司的PC伺服器完全是自己攢出來的,如何進行TPC-C的衡量的?也去參考TPC官方站點上的資訊?不要忘了,TPC.org 上公佈的測試結果都是各大廠商根據自己的系統進行了充分優化之後的出來的結果。打個比方,TPC公佈的數值就好比嶄新的法拉利跑車經過專業技師們的精心檢查保養,然後在專用跑道上跑出來的速度值,而我們的情況可能是法拉利(甚至是夏利)要在鄉村土路上行駛,可比性大打折扣。

有的朋友會想:那我們可以根據自己的情況,拿一個秒錶在“鄉村土路”上測試一下看看呀。這樣的意義也是顯而易見的,對我們的實際的環境不是更具有參考價值?不錯,這也正是本文的目的:讓我們利用開源(Open Source)工具來實現自己的針對Oracle資料庫的TPC-C。

Hammerora—The Open Source Oracle Load Test Tool

首先介紹一下Hammerora。從創作者對這個工具的標題描述可以看出,Hammerora是一款Oracle資料庫負載測試工具。該工具可以在Oracle 8i、9i和10g等版本上使用。當前可以用在Linux/Unix和Windows上。初步實現了跨平臺。Hammerora 完全用TCL/TK寫就,以GPL版權形式釋出。作者是Steve Shaw。該專案的主頁在:http://sourceforge.net/projects/hammerora/

Hammerora的設計原理是解析Oracle的Trace檔案,並把它們轉化為Oratcl程式,然後在Oracle資料庫中用多個使用者併發的對使用者的事務進行“回放”。我們知道,Oracle的Trace檔案能夠翔實的記錄使用者對資料庫的操作。這樣Hammerora能夠保證對使用者環境的真實模擬。

Hammerora最初是用以學習的目的:期望是模擬資料庫的一定數量的使用者。這樣一個小的基於家庭的學習開發系統就能夠比較接近產品環境。這個工具已經成長為一個Oracle資料庫做壓力測試--從小的資料庫到大的基於RAC的叢集。

TCL語言已經用來提供高效能的和Oracle資料庫的OCI整合,而無需重新編譯生成的程式。每個生成的程式具有嚴格的TCL/Oratcl相容性,並且可以在Hammerora的命令列Shell下執行。TCL的強大功能和靈活性意味著潛在的功能是無窮盡的。TCL執行緒包用來實現對Oracle資料庫的多個併發連線。

Hammerora包含Oracle儲存過程和TCL驅動指令碼用來執行TPC-C基準程式。但是,我們先要構建一個同TPC-C規範相符的資料庫。這樣,我們需要用到Orabm。

Orabm

Orabm是Geoff Ingram (High-Performance Oracle: Proven Methods for Achieving Optimum Performance and Availability一書的作者)構建的一個程式包,包含了一套SQL指令碼和幾個命令列程式。Orabm資料裝載程式(Orabmload)構建了一組遵從TPC-C標準的資料用以測試。Orabm的程式包和原始碼可以從它的主頁面( http://www.linxcel.co.uk/orabm/) 得到。

Orabm的執行機制

Orabm的執行機制在Geoff Ingram有明確的說明,這裡翻譯如下:Orabm通過在每個使用者指定的併發資料庫會話(session) 中執行使用者執行數量的資料庫事務來進行工作.事務通過ORABM模式下的ORABM_SERVERSIDE_STRESS儲存過程執行。對每個併發會話來說,ORABM_SERVERSIDE_STRESS執行在orabm命令列下指定的事務數,並返回該會話在取樣間隔完成時的TPS值.要確保所有併發會話都是在取樣間隔期間處理事務,TPS值僅包括事務的中間的80%,也即:初始的10%和最後的 10%將忽略掉。

安裝步驟

1) 安裝Oracle OCI 庫

對Oracle 9i 來說,如果沒有安裝該元件的話,可能要重新執行runInstall,在Oracle 9i Client products樹中選擇"Oracle Call Interfaces" .

對Oracle 10g來說,Oracle 10 OCI 庫應該是預設安裝的.

2) 安裝TCL

cd /usr/local/src/tcl8.4.5/unix

rm -f config.cache

./configure --enable-threads --enable-shared

make clean

make

make install

3 安裝TK

cd /usr/local/src/tk8.4.5/unix

rm -f config.cache

./configure --with-tcl=../../tcl8.4.5/unix --enable-threads --enable-shared

make clean

make

make install

4 安裝TCL Threads

cd /usr/local/src/thread2.5.2/unix

rm -f config.cache

sh ../configure --enable-threads --enable-shared

make clean

make

make install

5 安裝Oratcl

對10g來說,要編輯配置檔案,在1728 行附近, FOUND_ORACLE=0 那一行的下面新增如下部分內容:
echo "checking for Oracle 10.0 style toplevel (libclient10.a)" 1> &6
echo "configure:1730: checking for Oracle 10 style toplevel(libclient10.a)"> &5
for f in $oracle_directory $oratest1 $oratest2 $oratest3 /
$oracle4 /opt/oracle /u/oracle /usr/oracle /usr/local/oracle ; do
    echo "$ac_t""looking for lib/libclient10.a in $f" 1>&6
    if test -r "$f/lib/libclient10.a" ; then
        ORA="$f/lib"
        ORACLE_HOME=$f
        echo "$ac_t""setting ORA to $ORA" 1>&6
        testver=10
        ORA_MAJOR_VERSION=10
        ORA_MINOR_VERSION=0
        FOUND_ORACLE=1
        break
    fi
done

export ORACLE_HOME=your_oracle_home_directory
cd /usr/local/src/oratcl-4-1-branch/unix
rm -f config.cache
sh ../configure --with-tcl=../../tcl8.4.5/unix /
--with-oracle-directory=$ORACLE_HOME --with-oracle-version=9 ( or 10 or 8! ) /
--enable-threads --enable-shared
vi Makefile - 把所有的 -rpath 改做 -Wl,-rpath,
make clean

make

make install

sqlplus orabm/orabm @delivery_sp.sql
sqlplus orabm/orabm @new_order_sp.sql
sqlplus orabm/orabm @ostat_sp.sql
sqlplus orabm/orabm @payment_sp.sql
sqlplus orabm/orabm @slev_sp.sql
步驟 操作 命令
1 建立 ORABM使用者(用TOOLS做預設表空間,
TEMP 表空間為臨時表空間)
sqlplus system/pwd @orabm_user
2 建立表 sqlplus system/pwd @orabm_tab
3 裝載資料 $orabmload Warehouses 1
4 建立索引 sqlplus system/pwd @orabm_ind
5 分析表和索引 sqlplus system/pwd @orabm_analyze
6 建立壓力測試PL/SQL 過程 sqlplus system/pwd @orabm_serverside_stress
7 把表和索引資料緩衝到SGA sqlplus system/pwd @orabm_cache

把tpc-c.tcl指令碼載入Hammerora中(要檢視TCL檔案注意把過濾正確的副檔名:不是*.trc 而是*.tcl ),在該tpc-c.tcl中查詢connect字串,調整為你的資料庫使用者連線資訊。並調整虛擬使用者資訊。

測試執行

執行Hammerora,建立需要的使用者數, 來模擬TPC-C 基準程式(注意調整好執行Hammerora程式的環境變數,最好直接用Oracle使用者來執行).

參考資訊

Hammerora的主頁 - http://hammerora.sourceforge.net/
當前的軟體版本是1.15.
Geoff Ingram維護的個人站點 - http://www.linxcel.co.uk/orabm/
該站點上還有一個很有趣的工具orastress.用來進行Oracle資料庫壓力測試.
TPC官方站點 - http://www.tpc.org
RudolfLu的介紹 - http://www.cnoug.org/viewthread.php?tid=63
技術高手RudolfLu很早以前就曾對orabm這個工具做過介紹.

下載:

以下是使用記錄:

1.安裝

2.設定:

a)Benchamark-->TPC-C-->TPC-C Schema Options

  • 填入oracle service name
  • system user password
  • TPC_C user (to be created): default is tpcc
  • TOC-C user password: default is tpcc
  • TPC-C Default Tablespace: default is tpcctab
  • TPC-C Temporary Tablespace: default is temp
  • Number of Warehouses:要建立的商店數。

b)設定完後點‘cerate TPC-C schema'按鈕。建立需要測試的schema。

c)點TX Counter,配置system使用者登入的tns

d) Benchmark-->TPC-C-->TPC-C Drvier Script

e)Virtual Users-->設定virtual users-->點create virtual users 按鈕

f) 點run hammerora loadtest

g)點transaction counter可以看到tpm。(transaction per min)

這是易用軟體自帶的指令碼,可以模擬多使用者,多家店的資料。從而看以看到tpm。sa,dba可以在測試過程中觀察cpu等資源。比較好。