[Oracle]無限ループテスト

Oracle

システムのインフラに携わっていると、テストフェーズで新規接続に問題がないか、既存接続が切断されないかなどのテストを行う場合があります。

そういった場合に、

  • 接続→切断を無限に繰り返すスクリプト
  • 接続後、特定の処理を繰り返すスクリプト

などが重宝されます。ここではOracleに対する上記の2種類のシェルスクリプトを紹介します。この手のシェルスクリプトのお作法は知っておくと色々応用ができるので便利です。

接続と切断を無限に繰り返すスクリプト

#!/bin/sh

while true
do
sqlplus -S system/oracle@$1 <<EOF
select instance_name,to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') from v\$instance;
exit
EOF
sleep 1

done

こちらは1秒間隔で接続→インスタンス名の出力→切断を繰り返すシェルスクリプトです。

第一引数($1)には接続識別子を指定させていますが、ローカル接続の場合は「$1」を削除して問題ありません。

接続後に特定の処理を繰り返すスクリプト

#!/bin/sh

i=1
while [ $i -ge 0 ]; do
printf "select instance_name,to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') from v\$instance;\n"
printf "exec dbms_lock.sleep(1)\n"
done | sqlplus -S system/oracle@$1

こちらは新規接続後、printfに記述した処理を実行し続けるシェルスクリプトです。

いずれのスクリプトも終了処理は実装していませんので、Ctrl-Cまたはセッションをkillすることで終了させてください。

コメント

タイトルとURLをコピーしました