LoginSignup
2
1

Oracle実験室 / Oracle Database 19c (19.3) / トレースファイルの定期的な削除

Last updated at Posted at 2024-03-09

Oracleデータベースを連続稼働しているとトレースファイル等が溜まってきますので定期的に削除するためのスクリプトです.
必要に応じて, 削除前にzipアーカイブするなどします.
運用する環境に応じて,変数COMMANDSに対象ファイルの検索条件を追記してください.

  • シェルスクリプトファイルを作成・配置します.
~/bin/remove_old_files.sh
#!/bin/bash
##
## @file remove_old_files.sh 
##
## @brief Oracleの古いトレースファイル等の削除
##
## @details Oracleデータベース起動中はトレースファイル等のファイルが自動生成されます.<br/>
##          データベースを連続稼働する場合は, これらのファイルは適切なタイミングで削除する必要があります.<br/>
##          このスクリプトは, これら自動生成されるファイルのうち"一部の"ファイルを削除します.<br/>
##
## @param [in] $1 保存期間(日数)
## @param [in] $2 ORACLE SID
##
## @note 監視対象のファイルを追加する場合はCOMMANDS変数のfindコマンドで指定してください.<br/>
##
## @return none.
##
# ユーザー環境変数読み込み
. ~/.bash_profile

# ログファイル定義
LOGFILE=/var/tmp/remove_old_files_`date "+%Y%m%d_%H%M%S"`.log

# 変数定義
KEEP_DAYS=$1
ORACLE_SID=$2
ORACLE_BASE=`orabase`      # oracle db verion 12c or later.
ORACLE_HOME=`orabasehome`  # oracle db verion 12c or later.
echo "[INFO] KEEP_DAYS="${KEEP_DAYS}     >> ${LOGFILE}
echo "[INFO] ORACLE_SID="${ORACLE_SID}   >> ${LOGFILE}
echo "[INFO] ORACLE_BASE="${ORACLE_BASE} >> ${LOGFILE}
echo "[INFO] ORACLE_HOME="${ORACLE_HOME} >> ${LOGFILE}

# ファイル検索コマンド定義
COMMANDS=(
  "find ${ORACLE_BASE}/admin/${ORACLE_SID}/adump -name "*.aud" -type f -mtime +${KEEP_DAYS}"
  "find ${ORACLE_BASE}/diag/rdbms/${ORACLE_SID,,}/${ORACLE_SID}/trace \( -name "*.trc" -o -name "*.trm" \) -type f -mtime +${KEEP_DAYS}"
  "find ${ORACLE_HOME}/rdbms/log \( -name "*.trc" -o -name "*.trm" \) -type f -mtime +${KEEP_DAYS}"
)

# ファイル検索コマンド実行
for cmd in "${COMMANDS[@]}"; do
  echo "[INFO] cmd="$cmd >> ${LOGFILE}
  eval $cmd | grep -q .
  if [ $? -eq 0 ]; then
    eval $cmd | xargs ls -l >> ${LOGFILE}
#    eval $cmd | xargs rm -f    # uncomment after testing
  else
    echo "[INFO] file not found." >> ${LOGFILE}
  fi
done

echo "[INFO] done." `date "+%Y-%m-%d %H:%M:%S"` >> ${LOGFILE}
  • crontabに登録します.
    適切なタイミングでスクリプトが実行されるように設定します.
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
5 5 * * * sh /home/oracle/bin/remove_old_files.sh 7 ORCLCDB > /dev/null 2>&1
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1