Database Support Blog

Database Support Blog>【Oracle】Statspackレポートを期間指定で一括取得するスクリプト

  • Oracle Database
2017.12.15

【Oracle】Statspackレポートを期間指定で一括取得するスクリプト

【Oracle】Statspackレポートを期間指定で一括取得するスクリプト

StatspackはOracle Database 8i から提供されているデータベースパフォーマンス診断ツールです。Standard Editionでも利用できます。

ある期間内のREDO生成量やI/O数やキャッシュヒット率、各待機イベントの「待機の発生回数」、「待機した時間の平均/合計」、負荷の高いSQLなど、多くの情報を取得可能です。主にデータベース全体のパフォーマンスダウンが発生した際の原因調査で使用します。

先日開催された アシストテクニカルフォーラム 2017 (東京、名古屋)では、Statspackレポートの活用方法について解説を行い、その際、期間指定で一括取得するスクリプトをご紹介しました。

Statspackレポート活用方法についてのウェビナーを開催します!

本ブログではそのサンプルスクリプトと利用方法をご紹介します。

Statpackレポートの複数取得には手間がかかりませんか?

Statspackの利用シーンで多いものとして、パフォーマンスダウンの発生時に、発生時と未発生時それぞれの時間帯で出力したStatspackレポートを見比べ、ボトルネックとなっている箇所の特定を行うというのが挙げられます。

たとえば、1時間に1回Statspack Snapshotを取得している環境で12:30~12:50でパフォーマンスダウンが発生した場合は、通常時11:00 ~ 12:00と異常時12:00 ~ 13:00のそれぞれの期間で出力したStatspackレポートを比較します。

statspackレポートの利用イメージ

Statspackレポートは$ORACLE_HOME/rdbms/admin/spreport.sqlを実行し、レポートを出力させたい期間を明示的に指定して取得します。ただし、1回のスクリプトの実行で出力可能なレポートは1つのみですので、比較のために異なる時間帯のレポートを複数出力させるためには、何度も繰り返しspreport.sqlを実行する必要があります。

Statspackレポートを一括取得するスクリプト

本スクリプトでは、指定した日付の範囲で取得されているスナップショットごとに、Statspackレポートを一括で取得することが可能です。複数のレポートを一括で取得したい場合はこちらをご活用ください。Linux/Windowsそれぞれご用意しております。


※本サンプルスクリプトについてのお問合わせは弊社サポートセンターではお受けしかねます。個人の責任の範囲内でご利用ください。
 またこれらの使用によりいかなる損害が生じたとしても、弊社では保証いたしかねますので、ご了承ください。

スクリプト使用例

Windows版の使用例です。実行前の設定等詳細は同梱のREADMEをご確認ください。


1.lump_spreport.cmdを実行すると、レポート化の開始日、終了日の入力が求められます。

 
 C:\work>C:\work\lump_spreport_win\lump_spreport.cmd
 ----------------------------------------------------------------------------------------------
 レポート期間を確認します。
 例)2007-01-25に取得されたsnapshotをレポート化したい場合
     開始日付けを2007-01-25と入力、終了日付けを2007-01-26と入力します。
 ----------------------------------------------------------------------------------------------
 レポート化したい開始日付け(YYYY-MM-DD)を入力してください。
 


2.日付入力後、対象となるスナップショット一覧が表示されます。

 
 レポート化したい開始日付け(YYYY-MM-DD)を入力してください。
 :2017-12-04
 レポート化したい終了日付け(YYYY-MM-DD)を入力してください。
 :2017-12-05
 ----------------------------------------------------------------------------------------------
 このインスタンス番号:1
 対象スナップショット数:34
 
    SNAP_ID SNAP_TIME
 ---------- -------------------
          1 2017-12-04 14:00:00
          2 2017-12-04 15:00:00
          3 2017-12-04 16:00:00
          4 2017-12-04 17:00:01
          5 2017-12-04 18:00:01
          6 2017-12-04 19:00:01
          7 2017-12-04 20:00:01
          8 2017-12-04 21:00:02
          9 2017-12-04 22:00:02
         10 2017-12-04 23:00:03
         11 2017-12-05 00:00:03
         12 2017-12-05 01:00:04
         13 2017-12-05 02:00:04
         14 2017-12-05 03:00:05
         15 2017-12-05 04:00:06
         16 2017-12-05 05:00:06
         17 2017-12-05 06:00:07
         18 2017-12-05 07:00:08
         19 2017-12-05 08:00:08
         20 2017-12-05 09:00:09
         21 2017-12-05 10:00:09
         22 2017-12-05 11:00:10
         23 2017-12-05 12:00:11
         24 2017-12-05 13:00:11
         25 2017-12-05 14:00:12
         26 2017-12-05 15:00:12
         27 2017-12-05 16:00:13
         28 2017-12-05 17:00:13
         29 2017-12-05 18:00:14
         30 2017-12-05 19:00:15
         31 2017-12-05 20:00:15
         32 2017-12-05 21:05:16
         33 2017-12-05 22:00:17
         34 2017-12-05 23:00:17
 


3.表示されたスナップショットの範囲でレポート化を実行するには "YES" を入力し、ENTERを実行します。

 
 これらのスナップショットをレポート化します。
 レポート化には、CPU負荷がかかります。
 実行はシステムに影響の少ない時間帯に行ってください。
 処理を続行してよろしいですか?[YES/NO]
 


4.処理が正常実行されるとスクリプト配置ディレクトリに "spreport" の名前でフォルダが作成され、その配下にStatspackレポートが出力されます。

 
 処理を続行します。
 レポートファイル出力中...
 レポートファイル出力処理が完了しました。
 C:\work\lump_spreport_win\spreportディレクトリを確認してください。
 C:\work\lump_spreport_win>cd spreport
 C:\work\spreport>dir /od
  ドライブ C のボリューム ラベルがありません。
  ボリューム シリアル番号は F20F-8E7F です
 
  C:\work\spreport\spreport のディレクトリ
 
 2017/12/05  23:53           107,647 sp_1_1_2.lst
 2017/12/05  23:53           114,624 sp_1_2_3.lst
 2017/12/05  23:53           111,256 sp_1_3_4.lst
 2017/12/05  23:53           109,178 sp_1_4_5.lst
 2017/12/05  23:53           114,230 sp_1_5_6.lst
 2017/12/05  23:53           123,630 sp_1_6_7.lst
 2017/12/05  23:53           115,101 sp_1_7_8.lst
 2017/12/05  23:53           114,425 sp_1_8_9.lst
 2017/12/05  23:53           116,191 sp_1_9_10.lst
 2017/12/05  23:53           114,862 sp_1_10_11.lst
 2017/12/05  23:53           114,456 sp_1_11_12.lst
 2017/12/05  23:53           123,481 sp_1_12_13.lst
 2017/12/05  23:53           129,014 sp_1_13_14.lst
 2017/12/05  23:53           135,377 sp_1_14_15.lst
 2017/12/05  23:53           122,713 sp_1_15_16.lst
 2017/12/05  23:53           131,758 sp_1_16_17.lst
 2017/12/05  23:53           127,376 sp_1_17_18.lst
 2017/12/05  23:53           133,164 sp_1_18_19.lst
 2017/12/05  23:53           128,478 sp_1_19_20.lst
 2017/12/05  23:53           128,947 sp_1_20_21.lst
 2017/12/05  23:53           130,869 sp_1_21_22.lst
 2017/12/05  23:53           128,040 sp_1_22_23.lst
 2017/12/05  23:53           128,377 sp_1_23_24.lst
 2017/12/05  23:53           131,348 sp_1_24_25.lst
 2017/12/05  23:53           171,730 sp_1_25_26.lst
 2017/12/05  23:53           130,141 sp_1_26_27.lst
 2017/12/05  23:53           126,468 sp_1_27_28.lst
 2017/12/05  23:53           131,939 sp_1_28_29.lst
 2017/12/05  23:53           131,172 sp_1_29_30.lst
 2017/12/05  23:53           134,698 sp_1_30_31.lst
 2017/12/05  23:53           129,529 sp_1_31_32.lst
 2017/12/05  23:53           131,417 sp_1_32_33.lst
 2017/12/05  23:53           130,084 sp_1_33_34.lst
 2017/12/05  23:53              ..
 2017/12/05  23:53              .
 2017/12/05  23:53           129,600 sp_1_34_35.lst
               34 個のファイル           4,281,320 バイト
                2 個のディレクトリ  108,480,540,672 バイトの空き領域
 

これで12月4日 ~ 12月5日に取得されたStatspack Snapshotのレポート出力が完了しました。

なお、Linux版の場合もレポートの出力手順は基本的に同じですが、事前にシェルスクリプトの実行権限を付与する必要がありますので、以下のような操作を実施の上、ご利用ください。

 
 $ ls -l lump_spreport.sh 
 rw-r--r- 1 oracle oinstall 4687 Jul 25  2007 lump_spreport.sh 
 $ 
 $ chmod 755 lump_spreport.sh 
 $ 
 $ ls -l lump_spreport.sh 
 -rwxr-xr-x 1 oracle oinstall 4687 Jul 25  2007 lump_spreport.sh
 




執筆者情報

2006年 株式会社アシスト入社後、サポートセンターにてOracle製品のサポートエンジニアとして重篤障害などのトラブル対応をメインに2000件以上対応。フィールドエンジニアへの出向を経て、サポートセンターに復帰。現在は問い合わせを対応するメンバーのバックフォローを担当。


アシスト データベース ウェビナー



■商標に関して
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Database
  • Oracle Cloud
  • EDB Postgres
2020.09.17

DB関連セッション視聴ガイド 【アシストテクニカルフォーラム2020】

2020年10月22日(木)に開催されるオンライン技術フォーラム、アシストテクニカルフォーラム2020の全36セッションの中から、データベースに関連するセッションをご案内します。

  • Oracle Database
2020.08.05

DB事例多数!アシストオンラインフォーラム2020 目的別視聴ガイド

アシストオンラインフォーラム2020では140を超えるセッションをご視聴いただけます。数多くのセッションの中から、データベースに関連したセッションの視聴ガイドを情報収集の目的別に紹介します。

  • Oracle Cloud
  • Oracle Database
2020.04.24

Autonomous DatabaseにData Pumpでデータ投入する方法【Always FreeでもOK!】

世界初の自律型データベースであるAutonomous Databaseは、パッチ適用やチューニングなどの管理タスクを自動化した革新的なサービスです。今回はデータ移行ユーティリティData Pumpを使用してAutonomous Databaseへのデータ投入手順をご紹介します。

ページの先頭へ戻る