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

    【Oracle】テーブル指定で統計情報をバックアップ、インポートする方法とポイント

    Oracle Databaseで、テーブルを指定して統計情報をバックア…

  2. Oracle

    【Oracle】セッションがKILLEDのまま残り続けてしまう時の対処方法

    Oracleで特定のセッションを強制終了しようと ALTER SYST…

  3. Oracle

    [TNS-00525: 操作するには権限が不十分です] リスナーが起動できないときの対処方法

    CentOS 6のサーバにOracleを入れたり消したりしていたらリス…

  4. Oracle

    SSLを無効化して非SSL(http)でOEMにアクセスする方法

    最近のIE(例えばIE10も)でOracleのOEMにアクセスすると、…

  5. Oracle

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

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

  6. Oracle

    Impdp時にtablesを使うとファンクションやストアドは作成されない

    OracleのDataPumpコマンド『impdp』の利用時に tab…

コメント

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

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

最近の記事

  1. さくらのVPSにCentOS 5をインストールする方法
  2. PHP PhantomJSでFatal error: Unc…
  3. 【Oracle】DataPumpの対話式コマンドモードを抜け…
  4. CentOS7のPHP5.6にPhpSpreadsheetを…
  5. Azure仮想マシン(CentOS 7)のStandardデ…
PAGE TOP