ここではTGに添付しているORACLE用のサンプルトランザクションの使用方法について説明しています。本サンプルはOLTP系のトランザクションを意識した非常にシンプルなオブジェクトとSQL文によって構成されています。
1. 前提条件
まずはじめに負荷がけ対象のデータベースが以下の条件を満たしていることを確認してください。もし不足があるような場合には、適宜データベースの設定を変更するか、もしくはサンプル「smpl_oltp_oracle_vX.X.tgp」の設定内容を修正してください。
| DBサーバIPアドレス | 192.168.100.100 |
|---|---|
| SID名 | testdb |
| LISTENERポート番号 | 1521 |
| DBユーザSYSTEMのパスワード | manager |
| サンプルデータ格納用表領域 | USERS |
| 一時表領域 | TEMP |
2. サンプルトランザクションのロード
TGCを起動します。エクスプローラから「tgc.exe」ファイルをダブルクリックするか、コマンドプロンプトより以下のように入力してください。
C:\> cd tg09X C:\tg09X> tgc
続いてTGCのメインウィンドウより「File」メニューをクリックし、「Open」を選択、サンプル設定ファイル「smpl_oltp_oracle_vX.X.tgp」をロードしてください。

3. サンプルスキーマ・ダミーデータの作成
サンプルスキーマの作成(ジョブ「1.BUILD_SCHEMA」の実行)
サンプルトランザクションを実行するためのスキーマを作成します。「Jobs」メニューをクリック、「Execute specified Job」を選択、「1. BUILD_SCHEMA」ジョブを実行してください。

以下にジョブ「1.BUILD_SCHEMA」が正常に実行された場合の結果を示します。
TG> execute job 1 >> Execute job No : 1 [ 1.BUILD_SCHEMA ] SQL No.0 : create user TEST identified by test default tablespace USERS temporary tablespace TEMP System altered. SQL No.1 : grant CONNECT,RESOURCE to TEST System altered. SQL No.2 : create table TEST.ITEMLIST( ITEM_ID number, CATEGORY number, ITEM_NAME varchar2(32), DESCRIPTION varchar2(255)) nologging System altered. SQL No.3 : create table TEST.ORDERCOUNT( ITEM_ID number, ORDER_COUNT number) nologging System altered. SQL No.4 : create table TEST.ORDERLIST( ORDER_ID number, ITEM_ID number, ORDER_DATE date) System altered. SQL No.5 : create sequence TEST.SEQ_ORDER_ID start with 1 increment by 1 nomaxvalue nominvalue nocycle nocache System altered. SQL No.6 : select object_name, object_type from dba_objects where owner = 'TEST' order by object_type SEQ_ORDER_ID SEQUENCE ORDERLIST TABLE ORDERCOUNT TABLE ITEMLIST TABLE 4 rows selected. Specified job successfully executed. TG>
本ジョブが正常に完了した場合、以下のオブジェクトが作成されます。
| DBユーザ | TEST |
|---|---|
| テスト用テーブル x 3 |
ITEMLIST ORDERCOUNT ORDERLIST |
| テスト用シーケンス | SEQ_ORDER_ID |
ダミーデータの作成(ジョブ「2. GENERATE_DATA」の実行)
続いてダミーデータの作成を行います。「Jobs」メニューをクリック、「Execute specified Job」を選択、「2. GENERATE_DATA」ジョブを実行してください。

以下にジョブ「2. GENERATE_DATA」が正常に実行された場合の結果を示します。
TG> execute job 2
>> Execute job No : 2 [ 2.GENERATE_DATA ]
declare
ITEM_ID number;
CATEGORY number;
begin
ITEM_ID := 1;
CATEGORY := 1;
for i in 1..1000 loop
for ii in 1..50 loop
insert /*+APPEND*/ into ITEMLIST values(
ITEM_ID,
CATEGORY,
'N2345678901234567890123456789012',
'D2345678901234567890123456789012345678901234567890123456789
insert /*+APPEND*/ into ORDERCOUNT values(ITEM_ID, 0);
ITEM_ID := ITEM_ID + 1;
end loop;
CATEGORY := CATEGORY + 1;
commit;
end loop;
end;
Specified job successfully executed.
TG>
本ジョブが正常に完了した場合、50000件のダミーデータが、テーブル「ITEMLIST」「ORDERCOUNT」に挿入されます。なおこの処理にはDBサーバのスペックにもよりますが数分時間がかかることがあります。
インデックスの作成(ジョブ「3. BUILD_INDEXES」の実行)
最後にインデックスを生成します。「Jobs」メニューをクリック、「Execute specified Job」を選択、「3. BUILD_INDEXES」ジョブを実行してください。この処理にもまたある程度時間がかかる場合があります。

以下にジョブ「3. BUILD_INDEXES」が正常に実行された場合の結果を示します。
TG> execute job 3 >> Execute job No : 3 [ 3.BUILD_INDEXES ] SQL No.0 : alter table TEST.ITEMLIST add constraint PK_ITEMLIST_ITEM_ID primary key(ITEM_ID) System altered. SQL No.1 : create index TEST.IDX_ITEMLIST_CATEGORY on TEST.ITEMLIST(CATEGORY) System altered. SQL No.2 : alter table TEST.ORDERCOUNT add constraint PK_ORDERCOUNT_ITEM_ID primary key(ITEM_ID) System altered. SQL No.3 : alter table TEST.ORDERLIST add constraint PK_ORDERLIST_ORDER_ID primary key(ORDER_ID) System altered. SQL No.4 : create index TEST.IDX_ORDERLIST_ITEM_ID on TEST.ORDERLIST(ITEM_ID) System altered. SQL No.5 : create index TEST.IDX_ORDERLIST_ORDER_DATE on TEST.ORDERLIST(ORDER_DATE) System altered. SQL No.6 : alter table TEST.ITEMLIST logging System altered. SQL No.7 : alter table TEST.ORDERCOUNT logging System altered. SQL No.8 : select object_name, object_type from dba_objects where owner = 'TEST' order by object_type PK_ITEMLIST_ITEM_ID INDEX IDX_ORDERLIST_ITEM_ID INDEX PK_ORDERLIST_ORDER_ID INDEX PK_ORDERCOUNT_ITEM_ID INDEX IDX_ORDERLIST_ORDER_DATE INDEX IDX_ITEMLIST_CATEGORY INDEX SEQ_ORDER_ID SEQUENCE ORDERLIST TABLE ITEMLIST TABLE ORDERCOUNT TABLE 10 rows selected. Specified job successfully executed. TG>
4. トランザクションの実行
TGCのメインウィンドウより「Agent」メニューをクリックし、「Make agnets connect to the target database」を選択、Agentをターゲットデータベースに接続させます。

続いてTGCメインウィンドウより「Agent」メニューをクリックし、「Activate agents」を選択してください。これにより負荷がけ(トランザクションの実行)が開始されます。

なお、ここで実行されるトランザクションとは、以下の2種類のSQL文によって構成されています。トランザクション名「VIEW_ITEMS」は90%、「ORDER」は10%の確率でそれぞれ実行されます。
| トランザクション名 | 実行確立 | SQL |
|---|---|---|
| VIEW_ITEMS | 90% |
select * from ITEMLIST where CATEGORY = :VAL_CATEGORY; |
| ORDER | 10% |
insert into ORDERLIST values (SEQ_ORDER_ID.nextval, :VAL_ITEM_ID, sysdate); update ORDERCOUNT set ORDER_COUNT = ORDER_COUNT + 1 where ITEM_ID = :VAL_ITEM_ID; commit; |
また上記「:VAL_CATEGORY」と「:VAL_ITEM_ID」は乱数です。各乱数がとりうる値の範囲は次のようになっています。
| 乱数名 | 生成される値の範囲 |
|---|---|
| :VAL_CATEGORY | 1 ~ 1000 |
| :VAL_ITEM_ID | 1 ~ 50000 |
5. 性能の測定
トランザクションを実行させた状態で性能測定を行います。TGCのメインウィンドウより「Monitor」メニューをクリックし、「Monitoring start > Show summary」を選択します。

コンソール画面にトランザクションの実行状態が出力されます。一番右端の「TPS:」の値が、1秒間当たりのトランザクション実行数です。
TG> monitor 600 Monitoring start. [ 600 Seconds ] 21:23:09 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:23:10 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:23:11 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:23:12 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:23:13 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:23:14 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:23:15 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10
デフォルトでは10分後に計測が終了します。「Average TPS:」の値が10分間あたりの平均TPS値になります。
21:33:07 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 21:33:08 TRGT:ACTV CONN:10/10 DISC:0/10 TERM:0/10 ERR:0 TPS:10 ---- TRANSACTION REPORT ( SUMMARY ) ------------------ MONITORING PERIOD ~~~~~~~~~~~~~~~~~ - Begin : Sat May 10 21:23:09 JST 2008 - End : Sat May 10 21:33:08 JST 2008 THROUGHPUT ~~~~~~~~~~ Transaction name Min Max Average ================ ==== ===== ======= VIEW_ITEMS 0ms 109ms 4.48ms ORDER 0ms 266ms 8.62ms TPS ~~~ - Total transaction count : 5975 - Monitoring time : 600 seconds - Average TPS : 9.96 TG>
計測を途中で終了させたいような場合には「Monitor」メニューをクリックし、「Monitoring stop forcely」を選択してください。また計測期間を変更する場合は「Specify monitoring period」を選択し、計測時間を秒単位で入力してください。
6. トランザクションの終了
トランザクションを終了したい場合には、まず「Agent」メニューより「Freeze agents」を選択し、トランザクションの実行を停止させます。

続いて「Agent」メニューより「Make agents disconnect from the target database」を選択し、セッションを終了させてください。

7. サンプルスキーマの削除
サンプルトランザクション用に作成したデータやオブジェクトを削除したい場合には、「Jobs」メニューをクリック、「Execute specified Job」を選択、「4. DROP_SCHEMA」ジョブを実行してください。

以下にジョブ「4. DROP_SCHEMA」が正常に実行された場合の結果を示します。
TG> execute job 4 >> Execute job No : 4 [ 4.DROP_SCHEMA ] SQL No.0 : drop user TEST cascade System altered. Specified job successfully executed. TG>
以上でサンプルトランザクション「smpl_oltp_oracle_vX.X.tgp」の使用方法についての説明は終了です。


