SwingBench介紹:
創(chuàng)新互聯(lián)公司服務(wù)項目包括紹興網(wǎng)站建設(shè)、紹興網(wǎng)站制作、紹興網(wǎng)頁制作以及紹興網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,紹興網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到紹興省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
SwingBench由負載生成器,協(xié)調(diào)器和集群概述組成。該軟件使得能夠生成負載并且將圖表的事務(wù)/響應(yīng)時間映射。
SwingBench可用于演示和測試諸如實際應(yīng)用集群,在線表重建,備用數(shù)據(jù)庫,在線備份和恢復(fù)等技術(shù)
SwingBench附帶的代碼包括6個基準(zhǔn),OrderEntry,SalesHistory,TPC-DS Like,JSON,CallingCircle和StressTest ..
OrderEntry基于Oracle11g / Oracle12c附帶的“oe”模式。它已被修改,以便不需要安裝Spatial,Intermedia架構(gòu)。它可以連續(xù)運行(直到你用完了空間)。它在少量表上引入了大量爭用,旨在強調(diào)互連和內(nèi)存。它使用位于bin目錄中的“oewizard”進行安裝?;鶞?zhǔn)測試都存在純jdbc和pl / sql(較低的網(wǎng)絡(luò)開銷)變體。
SalesHistory基于Oracle11g / Oracle12c附帶的“sh”架構(gòu),旨在測試復(fù)雜查詢在對大型表進行運行時的性能。它是只讀的,可以按照從1GB到1TB的默認(rèn)大小進行縮放。自定義模式還允許創(chuàng)建更小和更大的模式
CallingCircle(不建議使用)模擬為在線電信應(yīng)用程序生成的SQL。它需要在每次運行之前將數(shù)據(jù)文件從數(shù)據(jù)庫服務(wù)器生成并復(fù)制到負載生成器,通常需要1到8 GB的磁盤空間。兩個基準(zhǔn)都是CPU密集型。經(jīng)驗表明,您至少需要1臺處理器的負載發(fā)生器到數(shù)據(jù)庫服務(wù)器的每兩個處理器。它旨在強調(diào)CPU和內(nèi)存,而不需要強大的I / O子系統(tǒng)。它使用位于bin目錄中的“ccwizard”進行安裝
StressTest只是根據(jù)一個熟知的表來觸發(fā)隨機插入,更新,選擇和更新。
JSON Stresstest基于對機場之間飛行的人員進行建模的簡單JSON文檔。它遵循基本的CRUD模型。
TPC-DS喜歡Benchmark是類似于TPC-DS的基準(zhǔn)。它在單獨的配置文件中具有查詢和事務(wù)工作負載。
SwingBench下載:
SwingBench官方網(wǎng)址:http://www.dominicgiles.com/swingbench.html,可以download下最新2.6版本的SwingBench,需要先安裝好jdk8,可以直接從oracle官網(wǎng)下載rpm安裝即可。SwingBench包文件解壓后如下:
生成測試數(shù)據(jù):
以order entry為示例:
圖形界面生成測試數(shù)據(jù)和壓測:
cd /tmp/swingbench/bin
./oewizard
選擇version2.0, next
選擇create the order entry schema,next
配置connect string、username和password, next
配置tablespaces的datafile, next
配置schema的size, next
默認(rèn)值為CPU個數(shù)*2, next
點擊yes , next
開始運行sql腳本生產(chǎn)測試數(shù)據(jù),這里需要等待。
數(shù)據(jù)已成功生成,接下來可以做壓測了。
開始性能壓測:
cd /tmp/swingbench/bin
./swingbench
修改connect string,配置server monitoring相關(guān)配置參數(shù),調(diào)整transtions的load ratio、number of users。
可以收集數(shù)據(jù)庫信息,生成awr報告。啟動壓測
可以在output標(biāo)簽上查看壓測結(jié)果
也可以在將結(jié)果保存在bin目錄下,XML格式
測試結(jié)果對比生成html文件,用bmcompare工具
命令行界面生成測試數(shù)據(jù)和壓測:
[root@oracle bin]# time ./oewizard -cl -create -scale 1 -cs //oracle:1521/xcky -dba system -dbap oracle -u soe1 -p soe1 -ts soe -df /u01/app/oracle/oradata/xcky/soe.dbf -tc 4 -s The following statement failed : GRANT EXECUTE ON dbms_lock TO soe1 : Due to : ORA-01031: insufficient privileges The following statement failed : begin $IF DBMS_DB_VERSION.VER_LE_10_2 $THEN -- Use the default stats collection approach dbms_stats.gather_schema_stats( OWNNAME=> 'SOE1' ,ESTIMATE_PERCENT=>DBMS_STATS.AUTO_SAMPLE_SIZE ,BLOCK_SAMPLE=>TRUE ,METHOD_OPT=>'FOR ALL COLUMNS SIZE SKEWONLY' ,DEGREE=> 4 ,GRANULARITY=>'ALL' ,CASCADE=>TRUE); $ELSIF DBMS_DB_VERSION.VER_LE_11_2 $THEN -- Oracle 11g release 2. Emable concurrent stats collection dbms_output.put_line('database version is less than or equal to 11.2'); DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','WAREHOUSES','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','INVENTORIES','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_INFORMATION','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_DESCRIPTIONS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERENTRY_METADATA','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','CUSTOMERS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ADDRESSES','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDER_ITEMS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','LOGON','INCREMENTAL','TRUE'); DBMS_STATS.GATHER_SCHEMA_STATS('SOE1'); $ELSIF DBMS_DB_VERSION.VER_LE_12 $THEN -- Oracle 12c. Concurrent Stats collection work slightly different in this release execute immediate q'[ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'DEFAULT_PLAN']'; execute immediate q'[ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 4 ]'; DBMS_STATS.SET_GLOBAL_PREFS('CONCURRENT','MANUAL'); DBMS_STATS.SET_TABLE_PREFS('SOE1','WAREHOUSES','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','INVENTORIES','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_INFORMATION','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','PRODUCT_DESCRIPTIONS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERENTRY_METADATA','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','CUSTOMERS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ADDRESSES','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDER_ITEMS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','ORDERS','INCREMENTAL','TRUE'); DBMS_STATS.SET_TABLE_PREFS('SOE1','LOGON','INCREMENTAL','TRUE'); DBMS_STATS.GATHER_SCHEMA_STATS('SOE1'); $END end; : Due to : ORA-20001: Invalid input values for pname ORA-06512: at "SYS.DBMS_STATS", line 26595 ORA-06512: at "SYS.DBMS_STATS", line 26751 ORA-06512: at line 17 ============================================ | Datagenerator Run Stats | ============================================ Connection Time 0:00:00.004 Data Generation Time 0:03:18.996 DDL Creation Time 0:03:47.528 Total Run Time 0:07:06.530 Rows Inserted per sec 60,836 Data Generated (MB) per sec 5.0 Actual Rows Generated 13,002,033 Post Creation Validation Report =============================== The creation of the schema appears to have been unsuccessful. See the following sections for further details. 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 : Invalid Objects (1) ================ Invalid Tables : Invalid Indexes : Invalid Views : Invalid Sequences : Invalid Code : 'ORDERENTRY' Missing Objects (0) ================ Missing Tables : Missing Indexes : Missing Views : Missing Sequences : Missing Code : Schema Created real 7m51.663s user 3m23.913s sys 0m24.096s [root@oracle bin]# ./charbench -u soe1 -p soe1 -uc 1 -min 10 -max 200 -rt 00:01 -a -s -r scale1_100user.xml
SwingBench官網(wǎng)上除了提供swingbench壓測工具外,還提供了其他監(jiān)控oracle數(shù)據(jù)庫的小工具,例如cpumonitor、dbtimemonitor、monitorDB、datagenerator等
monitorDB工具:
cd /tmp/MonitorDB/bin
修改配置文件monitordb.xml,將Username、Password和ConnectString進行配置后保存,啟動程序。
./monitordb
如dbtimemonitor工具:
cd /tmp/dbtimemonitor/bin
修改配置文件databases.xml,將Username、Password和ConnectString進行配置后保存,啟動程序。
./dbtimemonitor
如cpumonitor工具:
cd /tmp/cpumonitor/bin
修改配置文件cpu.xml,將HostName、Username和Password修改后保存,啟動程序
./cpumonitor
參考資料:
http://blog.csdn.net/xiaofan23z/article/details/7978998
http://www.dominicgiles.com/swingbench.html