Oracleへの接続(SQL*Plusでconnect ユーザー名/パスワードを実行)はそれなりの負荷がかかる。
できるだけサーバーの負荷をかけず、また、PL/SQLを書くことなく短時間で同じ繰り返しSQLを実行したい場合、次のようにする。
特に、パフォーマンス・チューニングの際、今現在実行しているセッションの情報や流れているSQLを取得する場合に便利。
--ここから--
#!/bin/sh
(
SLEEP_SEC=3 # 繰り返しの頻度
# 接続情報
echo "connect / as sysdba"
# SQL*Plusの設定 echoさせることでSQL*Plusにコマンドを渡す
# columnコマンド等もここに書く
echo "set head off"
echo "set feed off"
echo "set time on"
echo "set pages 10000"
echo "set lines 2000"
# このwhile文の中のSQLを繰り返し実行させる
# whileに条件をつければ、回数の制限も可能
while true
do
# SQL文やSQLスクリプトの実行文(@ファイル名)をechoさせる
echo 'select * from v$session where status = 'ACTIVE;'
sleep ${SLEEP_SEC}
done
) | sqlplus -s /nolog
exit 0
--ここまで--