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

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

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

  2. Oracle

    【Oracle】表領域を新規で作成してユーザーも作成する手順

    Oracle Databaseで、新規で表領域を作成しその表領域をデフ…

  3. Oracle

    【Oracle】一般ユーザーにシステムビューへのアクセス権を付与する方法

    Oracle Databaseで、作成した一般ユーザーからシステムビュ…

  4. Oracle

    【Oracle】Data Pumpでシーケンスのみを移行する方法

    Data Pumpでは inculde を利用することでシーケンスのみ…

  5. Oracle

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

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

コメント

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

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

最近の記事

  1. PHP PhantomJSでFatal error: Unc…
  2. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  3. CentOS7のPHP5.6にPhpSpreadsheetを…
  4. Azure仮想マシン(CentOS 7)のStandardデ…
  5. 【CentOS 7】特定ユーザーのクォータ設定を削除(無制限…
PAGE TOP