STATSPACKレポートを全部一気に出力するスクリプト - MATSU’s vision
を参考にAWRレポートを一気に出力するスクリプトを作ってみた。
必要に迫られてやっつけでつくったのでおかしなところがあるかも。。。
ファイルリスト
$ find .
.
./output_report.sh
./output_report.sql
./log
実行方法
$ su - oracle $ ./output_report.sh
実行結果
$ find ./log
./log
./log/awr_tmp.sql
./log/455_456.txt
./log/456_457.txt
./log/458_459.txt
./log/459_460.txt
ソースコード
- output_report.sh
#!/bin/sh LANG=C export LANG NLS_LANG=American_America.JA16EUC export NLS_LANG LOG_DIR=log BASE_DIR=`dirname $0` if [ ! -d "${BASE_DIR}/${LOG_DIR}" ] then mkdir "${BASE_DIR}/${LOG_DIR}" fi cd "${BASE_DIR}/${LOG_DIR}" sqlplus system/manager @../output_report.sql
- output_report.sql
- 直近2世代のレポートを出力するようにしている。
set pages 0 spool awr_tmp.sql select 'define report_type=text' || chr(10) || 'define num_days=2' || chr(10) || 'define begin_snap=' || SNAP_ID || chr(10) || 'define end_snap=' || (SNAP_ID + 1)|| chr(10) || 'define report_name=' || SNAP_ID || '_' || (SNAP_ID + 1) || '.txt' || chr(10) || '@?/rdbms/admin/awrrpt.sql' || chr(10) from sys.dba_hist_snapshot where snap_id > (select max(snap_id)-3 from sys.dba_hist_snapshot) and snap_id < (select max(snap_id) from sys.dba_hist_snapshot) order by snap_id; spool off @awr_tmp.sql exit