Oracle

  (最終更新日:2017.07.14)

【Oracle】統計情報をCronで手動更新する為のスクリプト

Oracleの統計情報を手動で(といってもCronの自動実行で)更新するためのシェルスクリプトを作成してみたのでメモ的に残しておきたいと思います。 Cronでの一回限りの実行がしたかったので、『スケジュールでやればいいじゃん』というツッコミは無しでお願いします‥。

使い方は単純なので同じような処理が必要な方はぜひどうぞ。

#!/bin/sh
#--------------------------------------------------------------------#
#-  環境設定
#--------------------------------------------------------------------#
#スクリプト名
SCRIPTNAME=`/bin/basename $0`

#プロセスID
PID=$$

#ホスト名
HOSTNAME=`hostname`

#通知メール設定
MAILTO=root
MAILFILE=/tmp/update_statstables.log
MAIL_ON_END=yes
ERROR_SUBJ="[ERROR] Oracle DBMS_STATS Update for ${HOSTNAME}"

#その他環境設定
export LANG=ja_JP.UTF-8


#--------------------------------------------------------------------#
#-  Function >> メール送信
#--------------------------------------------------------------------#
function mail_notification {
    if [ "$MAILTO" != "" ] ; then
        /bin/mail -s "$1" $MAILTO < $MAILFILE
    fi
    exit 1
}


#--------------------------------------------------------------------#
#-  Function >> メッセージ表示
#--------------------------------------------------------------------#
Msg () {
    echo "`date '+%Y/%m/%d %T'` ${SCRIPTNAME}[${PID}]: $*"
}


#--------------------------------------------------------------------#
#-  メイン処理
#--------------------------------------------------------------------#
Msg "############### START ###############" > $MAILFILE

su - oracle -c "
sqlplus -s / as sysdba << EOF
set feedback off
whenever sqlerror exit sql.sqlcode
BEGIN
DBMS_STATS.GATHER_SCHEMA_STATS (OWNNAME => '[対象のユーザー名]',OPTIONS => 'GATHER');
END;
/
exit sql.sqlcode
EOF
"
RET=$?
if [ $RET -eq 0 ]
then
    Msg "DBMS_STATS exec complete successfully." >> $MAILFILE
else
    Msg "DBMS_STATS exec failed." >> $MAILFILE
    mail_notification "$ERROR_SUBJ"
fi

Msg "############### END ###############" >> $MAILFILE



#-- メールの送信 --#
if [ "$MAIL_ON_END" != "no" ] ; then
    mail_notification "[COMPLETE] Oracle DBMS_STATS Update for ${HOSTNAME}"
fi

exit 0
スポンサーリンク
スポンサーリンク

関連記事

  1. Oracle

    Statspackの取り方:テキスト形式のレポートをコマンドで出力する

    Oracleの障害や状況調査で役に立つStatspackレポートをテキ…

  2. Oracle

    Statspackレポートを定期的(1日1回)に自動で作成する方法

    OracleのStatspackレポートを、自動で1日1回、1時間間隔…

  3. Oracle

    最新のOpatchをダウンロードする方法

    Oracleから最新のOpatchをダウンロードする方法が非常に分かり…

  4. MaxGauge

    MaxGaugeインストール:ORADEBUGを利用してIPCを確認する方法

    MaxGaugeをインストールする際に、監視対象のインスタンスのIPC…

  5. Oracle

    アーカイブログを削除する方法

    アーカイブログ・モードの時にガンガン作成されるアーカイブログ・…

  6. Linux

    LinuxカーネルパラメータSEMMNSとSEMMSLの値を確認する方法

    OracleでPROCESSESパラメータの値を変更する際には、OSカ…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. Can’t locate HTTP/Reques…
  2. 【PHP】cURLでベーシック認証のページへPOSTして結果…
  3. phpIPAMでRest APIを利用してデータを参照する手…
  4. pnp4nagios(0.6.26)のグラフでY軸を最大値で…
  5. 【NetApp】筐体廃棄前にディスクの完全消去をする手順
PAGE TOP