
正月なので小ネタでもと思い、Oracle Cloud Infrastructure(略してOCI)のDBサービスであるOCI Databaseに対して、SwingBenchで負荷がけしてみました。
Oracle Cloudのコンセプトは、オンプレミスと同じ製品・同じアーキテクチャなので、SwingBenchについても基本的にはオンプレミスと同様の手順で利用できます。
とはいえ実際にやってみると、いくつかハマリポイントがあったので、簡単に手順を紹介します。
環境
・負荷がけ対象DB
サービス:OCI Database Virtual Machine
OS:Linux
DB:12cR2 Single
・クライアント
OS:Windows 7
手順
1.SwingBenchインストール
以下サイトより、最新の「SwingBench 2.6」をダウンロードして、インストール。
http://dominicgiles.com/downloads.html
インストール手順は任意のフォルダにzipファイルを解凍するだけなので、割愛。
※当初はクライアント用のノートPCだけにインストールしたのですが、後述の理由により対象DBサーバに対してもインストールしました。
なお、SwingBenchインストールにはjava8が必要ですが、OCI DB環境はデフォルトで利用可能となっていました。
$ java -version
java version “1.8.0_161”
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
2.oewizardを利用してデータ投入
クライアント側(Windows)でoewirzard2.batを利用してデータ登録しようとしたものの、DB接続後のデータ投入スクリプト実行中に「ORA-01017: invalid username/password; logon denied」が発生。
※DB接続自体は一旦成功するので、スクリプト内での再接続時に失敗していると思われるが、詳細までは未確認。
(Swingbenchがマルチテナント対応していないか、Oracle CloudへのPublic IP接続が影響しているのかなーと推測。あるいは環境固有の問題なのかも。)
このエラー自体はローカルから接続しちゃえば回避できると考えて、DBサーバ側にSwingbenchをインストールして続行することにしました。
DBサーバへのSwingBenchインストール後、binフォルダ内にあるoewizardを実行してデータ投入開始。
実行例)
[oracle@xxxxxx]$ ./oewizard -cl -create -cs <接続情報> -dbap <password> -p <soe password>
⇒-csでの接続情報はEZCONNECT形式(//<private IP>:<リスナーポート番号>/<サービス名>)で指定すればOK
⇒-dbapでsysスキーマのパスワード、-pでデータ登録先のSOEスキーマのパスワードを指定する
(SOEスキーマのパスワードを指定しないと、パスワード基準を満たさない旨のエラーが出るので注意)
SwingBench Wizard
Author : Dominic Giles
Version : 2.6.0.1090Running in Lights Out Mode using config file : ../wizardconfigs/oewizard.xml
============================================
| Datagenerator Run Stats |
============================================
Connection Time 0:00:00.005
Data Generation Time 0:05:02.884
DDL Creation Time 0:01:40.992
Total Run Time 0:06:43.884
Rows Inserted per sec 39,970
Data Generated (MB) per sec 3.3
Actual Rows Generated 12,953,035
Commits Completed 669
Batch Updates Completed 64,788Post 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
[oracle@xxxxx]$
3.swingbench.batを利用して負荷がけ
このままOCI DB上での負荷がけも出来るはずですが、手軽に利用できるWindows環境から負荷がけしてみます。
まずは、SwingBenchインストールフォルダ配下にある「winbat/swingbench.bat」を実行。
コンフィグファイルの選択画面が表示されるので、任意のものを選択して次へ。
以下のような画面が表示されるので、左上にある接続情報を適切に入力。
connect stringは先ほどと同じくEZCONNECT形式で入力すればOK。
ただし、今度はPublic IPを指定する必要があるので注意。
(VPN環境であればPrivate IPでも接続できるはず)
passwordは、oewizard 実行時に-pオプションで指定したSOEスキーマのパスワードを指定。
※もちろん、DBサーバのセキュリティリストでリスナーポート番号への接続許可を事前に設定しておくこと。
情報が正しければ、接続情報の横にある心電図のようなボタンでDBログインできます。
あとは、再生ボタンを押して負荷がけすればOK。
⇒無事、負荷がけ成功!
参考情報
・Swingbenchダウンロード
http://www.dominicgiles.com/swingbench.html
・Swingbenchを使ってみる
https://qiita.com/mon_tu/items/9ca9f50b69ca5ea4c18e
・SwingBenchの OrderEntry Wizard (oewizard)をコマンドラインモードで実行する
https://qiita.com/mon_tu/items/9d890e789f1a71f183a5
・SwingBench Reference and User Guide
http://dominicgiles.com/swingbench/swingbench21f.pdf
Leave a Reply