はじめに

Oracle Exadataをベースに構成されるAutonomous Database(ADB)は、分析系の処理だけでなく、バッチ処理、OLTP(オンライン・トランザクション)処理といった様々なワークロードに対応可能です。

この章ではOracle Databaseのベンチマークツールとして利用されることの多いSwingbenchを利用し、OLTP処理をATPで動かしてみます。

併せて、データベースの負荷状況に応じて自動的にCPUをスケールさせる、自動スケーリング(Auto Scaling)の動作を確認します。

目次

前提条件


所要時間: 約1時間30分


1.Swingbenchをセットアップしよう

Swingbenchをダウンロード、データ生成

まずはSwingbenchを仮想マシン上にダウンロードし、ベンチマーク・データをADBインスタンス内に生成しましょう。 OCIで仮想マシンを作成する場合は、こちらの204: 開発者向け仮想マシンのセットアップ方法を参考にしてください。

  1. Terminalを起動し、仮想マシンにopcユーザログイン後、oracleユーザに切り替えます。

    ssh -i <秘密鍵のパス> opc@<仮想マシンのIPアドレス>
    
    sudo su - oracle
    

    画面ショット1-1

  2. 作業用ディレクトリを作成します。
    mkdir -p labs/swingbench
    
  3. 作業用ディレクトリに移動します。

    cd labs/swingbench
    
  4. Swingbenchダウンロードします。wgetもしくはcurlコマンドをご利用ください。(数分程度かかります。)

    wget https://github.com/domgiles/swingbench-public/releases/download/production/swingbench25052023.zip -O swingbenchlatest.zip
    

    OR

    curl https://github.com/domgiles/swingbench-public/releases/download/production/swingbench25052023.zip -o swingbenchlatest.zip
    
  5. 展開します。

    unzip swingbenchlatest.zip
    

    画面ショット1-1

    画面ショット1-1

  6. ADBのウォレットを配置するディレクトリを作成します。

    mkdir /home/oracle/labs/wallets
    
  7. ここにADBに接続するためのウォレットを配置し、sqlnet.oraを編集します。

  8. (必要に応じて)念のため環境変数を設定します。

    locate libsqlplus.so
    

    exportコマンドで、得られたパスを環境変数LD_LIBRARY_PATHに格納します。

    例えば、locate libsqlplus.so の出力結果が /usr/lib/oracle/21/client64/lib/libsqlplus.soだった場合は次のようになります。

    export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib
    
    export TNS_ADMIN=/home/oracle/labs/wallets
    

    もしくは、仮想マシンに再ログインしても上記の環境変数が保持されるように、.bashrcに環境変数を保存します。

    vi ~/.bashrc
    
    export LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib
    export TNS_ADMIN=/home/oracle/labs/wallets
    

    画面ショット1-1

  9. 念のためSQL*Plusでログインできることを確認します。

    sqlplus admin/<ADMINユーザのパスワード>@<ADBの接続サービス>
    

    画面ショット1-1

  10. データ生成用のスクリプトを編集・実行します。 viで1install.shを開き、内容を確認、お使いの環境に応じて編集ください。

    vi 1install.sh
    

    【1install.shの内容】

       #!/bin/sh
       ./swingbench/bin/oewizard 
          -cf ~/labs/wallets/Wallet_atp01.zip \
          -cs atp01_tp \
          -ts DATA \
          -dbap Welcome12345# \
          -dba admin \
          -u soe \
          -p Welcome12345# \
          -async_off \
          -scale 5 \
          -hashpart \
          -create \
          -cl \
          -v
    
  11. ファイルに実行権限を付与します。

    chmod +x 1install.sh
    

    画面ショット1-1

  12. スクリプトを実行し、データを生成します。

    nohup ./1install.sh &
    

    画面ショット1-1

    NOTE

    ADBインスタンス内にSOEスキーマが作成され、その中にSwingbenchで利用するオブジェクト、データが作成されます。 データ増幅処理の処理時間短縮化のために、出来ればECPU数は多めに設定ください。 またデータ生成には多少なり時間を要するため、nohupコマンドを利用します。こうすることで、仮想マシンとのネットワーク通信が万が一切断されたとしても、仮想マシン上で本スクリプトの実行を継続することが可能です。

  13. このままでは、実行状況が確認できないため、下記のコマンドで、実行状況の確認します。

    tail -f nohup.out
    

    画面ショット1-1

  14. 以下のようにSchema Createdが表示されたらデータ増幅の処理は完了です。CTRL+C で nohupコマンドを終了してください。

    画面ショット1-1

生成されたスキーマ・オブジェクトの確認

次にセットアップしたデータに問題がないか確認します。

  1. Terminalを起動し、仮想マシンにopcユーザログイン後、oracleユーザに切り替えます。

    ssh -i <秘密鍵のパス> opc@<仮想マシンのIPアドレス>
    
    sudo su - oracle
    

    画面ショット1-1

  2. 作業用ディレクトリに移動します。

    cd /home/oracle/labs/swingbench
    

    画面ショット1-1

  3. viで2-1check.shを開き、内容を確認、必要に応じて編集ください。

    vi 2-1check.sh
    

    【2-1check.shの内容】

    #!/bin/sh
    ./swingbench/bin/sbutil -soe -cf ~/labs/wallets/Wallet_atp01.zip \
       -cs atp01_tp -u soe -p Welcome12345# \
       -val
    ./swingbench/bin/sbutil -soe -cf ~/labs/wallets/Wallet_atp01.zip \
       -cs atp01_medium -u soe -p Welcome12345# \ 
       -stats
    ./swingbench/bin/sbutil -soe -cf ~/labs/wallets/Wallet_atp01.zip \ 
       -cs atp01_medium -u soe -p Welcome12345# \
       -tables
    
  4. ファイルに実行権限を付与します。

    chmod +x 2-1check.sh
    

    画面ショット1-1

  5. スクリプトを実行し、実行結果を確認します。(統計情報の再取得も実施しているため数分程度かかります。)

    ./2-1check.sh
    

    以下のように表示されればOKです。

    画面ショット1-1


2. Swingbenchを実行し、ECPUをスケールアップしてみよう

それではベンチマークツールを動かしてみましょう。ECPUをオンラインでスケールアップできること、スケールアップの前後でTPS(秒間のトランザクション数)を比較し、TPSが向上することを確認しましょう。

ECPU=2 (自動スケーリング無効)

  1. ATPの詳細画面にて、スケール・アップ/ダウンを選択してください。ECPU数を2で自動スケーリングは無効であることを確認して下さい。

    画面ショット1-1

  2. Terminalを起動し、仮想マシンにopcユーザログイン後、oracleユーザに切り替えます。

    ssh -i <秘密鍵のパス> opc@<仮想マシンのIPアドレス>
    
    sudo su - oracle
    

    画面ショット1-1

  3. 作業用ディレクトリに移動します。

    cd /home/oracle/labs/swingbench
    

    画面ショット1-1

  4. viで3execute.shを開き、使用中の環境に合わせて、内容を確認・編集してください。

    vi 3execute.sh
    

    【3execute.shの内容 】

    #!/bin/sh
    ./swingbench/bin/charbench -c ~/labs/swingbench/swingbench/configs/SOE_Server_Side_V2.xml \
             -cf ~/labs/wallets/Wallet_atp01.zip \
             -cs atp01_tp -u soe -p Welcome12345# \
             -v users,tpm,tps,vresp \
             -intermin 0 \
             -intermax 0 \
             -min 0 \
             -max 0 \
             -uc 64 \
             -di SQ,WQ,WA
    
  5. ファイルに実行権限を付与し、実行します。

    chmod +x 3execute.sh
    ./3execute.sh
    

    以下のように表示されればOKです。

    画面ショット1-1

    左から4列目のTPS(秒間のトランザクション数)の数字に着目ください。

    安定するまで1分ほど待ちましょう。

  6. 1分程度待って安定した時点での値を、この後の比較のためにメモしておきましょう。

    本環境でECPU2の自動スケーリング無効の条件では、TPSは約500前後ですね。

    画面ショット1-1

ECPU=16 (自動スケーリング無効)

  1. ここで、ATPの詳細画面にて、スケール・アップ/ダウンを選択してください。ECPU数に16を入力し、自動スケーリングは無効のまま更新をクリックしてください。

    画面ショット1-1

  2. Terminalに戻り、TPSを観察しているとECPU2からECPU16へECPUが増えてもオンラインでアプリケーションにはエラーが発生しないこと、ECPUにが増えた結果TPSも向上していることが確認できます

    画面ショット1-1

  3. 1分程度待って安定した時点での値を、比較のためにメモしておきましょう。

    本環境でECPU16の自動スケーリング無効の条件では、TPSは約3500前後ですね。

    画面ショット1-1

ECPU=16 (自動スケーリング有効)

  1. ここで、ATPの詳細画面にて、スケール・アップ/ダウンを選択してください。ECPU数に16を入力し、自動スケーリングは有効にして更新をクリックしてください。

    自動スケーリングを有効にすると、データベースで、CPUの現在のベース数の3倍までいつでも使用できるようになります。

    画面ショット1-1

  2. Terminalに戻り、TPSを観察していると自動スケーリングが有効になった結果、TPSが向上していることが確認できます

    画面ショット1-1

  3. 1分程度待って安定した時点での値を、比較のためにメモしておきましょう。

    本環境でECPU16では、TPSは約6400前後ですね。

    画面ショット1-1

  4. Swingbenchを終了するには、Enterキーを押して下さい。

Swingbenchが動いたままECPUをオンラインでスケールできること、そして、ECPU数や自動スケーリング設定に応じてTPSが向上していることが確認できました。

以上で、この章の作業は終了です。


ページトップへ戻る

更新日時: