OracleのStatspackレポートを、自動で1日1回、1時間間隔のレポート23個を定期処理で作成したいなぁと思いましたのでシェルを作成してみました。
全く改善させていないショボいスクリプトで申し訳ないですが、せっかくなので共有してみたいと思います。(同じようなことをしたい人がきっといるはずだと思いますので‥)
改善案などありましたらぜひアドバイスいただけると嬉しいです。
要件
要件として、下記のような状況の中で自動作成を目指しました。
- 1時間間隔(自動)でスナップショットを作成
- 前日のレポートを作成
- レポートは1時間間隔の24時間分におけるStatspackレポート23個
- OS oracleユーザーのCronで実施
- インスタント名はORCL
構成
構成は下記のような感じです。 ディレクトリ(tmp)の中にスナップショットリストのファイルを一時的に作成します。
- get_sptext.sh ➡ 本体
- [ディレクトリ(sql)] REPORT1.sql ➡ スナップショットリストを取得するSQLファイル
- [ディレクトリ(sql)]REPORT2.sql ➡ Statspackレポートを作成するSQLファイル
- [ディレクトリ(tmp)]
仕組み・スクリプト
REPORT1.sql で前日のスナップショットリストを取得してきます。取得したリストをもとにぐるぐるまわしてStatspackレポートを作成します。
本体となるシェルスクリプト(get_sptext.sh)は下記の通りです。
スナップショットリストを取得するSQL(REPORT1.sql)は下記の通りです。
Statspackレポートを作成するSQL(REPORT2.sql)は下記の通りです。
以上で完了です。
あとはCronに get_sptext.sh を指定すれば、指定したバックアップディレクトリにレポートが定期的に作成されていきます。