25
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 日本オラクル株式会社 パフォーマンス・クリニック・サービス パフォーマンス診断ツール Statspackの使い方

Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |

日本オラクル株式会社

パフォーマンス・クリニック・サービス パフォーマンス診断ツール Statspackの使い方

Page 2: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標

または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提

供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項

は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないた

め、購買決定を行う際の判断材料になさらないで下さい。

オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の

裁量により決定されます。

2

Page 3: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

サービスのご利用にあたって

• パフォーマンス・クリニックを実施される際には、 ヒアリングシートおよびStatspackレポートの情報が必要になります。

• Statspackについて

– 可能であれば、1日分のレポートを取得してください。 (難しければ、それより少ない回数でも分析可能です)

– スナップショットの取得間隔は60分で取得し、 間にデータベースの再起動を行わないでください

• データベースの設定について

– 以下の初期化パラメータを変更している場合にはご注意ください。

• 9iR1までのバージョンの場合は、初期化パラメータTIMED_STATISTICSがTRUEに 設定されていることをご確認ください。

• 9iR2以降のバージョンでは、初期化パラメータSTATISTICS_LEVELがTYPICALに 設定されていることをご確認ください。

3

はじめに

Page 4: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Statspackとは

4

Statspack概要

Statspackを利用すると、ある期間で行われた処理の統計情報を取得できます

Statistics Package パフォーマンス・チューニングに役立つ情報を

レポートという形で提供するツール

上記のような情報を利用して性能劣化の原因を分析します

データベースの待機状況

メモリの ヒット率

トランザクションの傾向

Page 5: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Statspackとは

5

Statspack概要

Statspackでは、まずある1時点での累積統計情報を取得します。 (これをスナップショットとよびます)

その後、ある2時点で取得した内部統計データ(スナップショット)の差分を元に、

その間のパフォーマンス統計データを結果レポートに出力します。

経過時間

A時点から B時点までの パフォーマンス 統計データ

A時点 B時点

スナップ ショットA

スナップ ショットB

Page 6: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

スナップショットとは

6

Statspack概要

• 「スナップショット」とは

– ある時点に収集されたパフォーマンス統計データの集合です これらの情報は、内部表(V$ビュー)から取得されます

– 取得される情報は、スナップショットのレベルによって異なります。 パフォーマンス・クリニックでは、「Level5 (デフォルト値) 」のスナップショットを取得してください。

レベル 基本統計 情報

アドバイス 情報

SQL 統計情報

SQL 詳細情報

セグメント 統計情報

ラッチ 統計情報

level 0 〇 〇

level 5 〇 〇 〇

level 6 〇 〇 〇 〇

level 7 〇 〇 〇 〇 〇

level 10 〇 〇 〇 〇 〇 〇

Page 7: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

スナップショットの取得期間

7

Statspack概要

【よくあるご質問】 スナップショットはどのくらいの間隔で取得するのがいいでしょうか?

【回答】 30分~1時間程度の間隔で、常時取得をするのがよいでしょう。 長すぎると、統計データが平均化されて、特定の問題が検知しにくくなります。 また、問題発生時のみ取得しても、状況判断がしにくいため、「通常の状態」も取得しておくことをお勧めしま す。 保存期間を決めて古くなったものは定期的に削除するようにしてください。

60分 60分 60分 60分

スナップショット スナップショット スナップショット スナップショット スナップショット

Page 8: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

スナップショット取得時の負荷について

8

Statspack概要

【よくあるご質問】 Statspack自体が負荷になることはないのでしょうか?

【回答】 Statspackの実態はプロシージャと実行スクリプトですので、インストールしたのみで、サーバの負荷に影響を 与えることはありません。またスナップショットの取得も、通常はそれほど負荷がかかることはありません。 (Level10のスナップショットでは負荷がかかる可能性があります)

スナップショット取得時には、内部表(V$ビュー)から情報を取得します この際、主にCPUリソースを使用するため、 CPU負荷の高い時間を避けるなどの工夫が必要です

• 高負荷な時間を挟んで取得 • レポートの作成は負荷が低い時に実行

負荷少

負荷高

負荷少

スナップショット スナップショット レポート作成

Page 9: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

インストール・ガイド

9

Statspackのインストール

• Statspackのインストール・ガイドとしては以下のものがあります

– マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド およびリファレンス リリース2(9.2)」 21. Statspackの使用方法 http://otndnld.oracle.co.jp/document/oracle9i/920/generic/ server/J06248-02.pdf

– SPDOC.TXTファイル

• ORACLE_HOME/rdbms/adminに用意されています

• Statspackパッケージに関する説明(英語)

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

自動診断機能の強化に伴い、10g以降のマニュアルからはStatspackの内容に関する説明が省かれています。 Statspackは10g以降でも9iR2のものと変わりませんので、上記のマニュアルをご確認ください。

Page 10: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

インストール作業を行う前に

10

Statspackのインストール

• 既にStatspackがインストールされている場合はページ10~ページ12の 作業は行わずに、ページ13「Statspackの実行」へ進んでください ※Statspackが既にインストールされている状態で再度spcreate.sqlを実行して インストールを行うとエラーが発生します

• 既にStatspackがインストールされているかどうかの確認は、 以下の方法で「PERFSTAT」ユーザーが存在しているか確認してください 存在する場合は既にインストールがされています

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

SQL*PLUSに管理者権限を持つユーザーでログインし、以下のSQLを実行

SQL> SELECT user_id, username FROM dba_users

WHERE username = ‘PERFSTAT’;

Page 11: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

インストール前の準備

11

Statspackのインストール

• Statspack情報格納用の表領域を作成 例)「Tools」表領域を作成します

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

【よくあるご質問】 既存の表領域を使っても良いのでしょうか? 【回答】 はい、可能です。ただし管理上の理由から、ユーザーデータと分離することをお勧めします。 専用の領域を用意しておけば、不要になったときに、領域をまとめて削除することが可能です。 (既存の表領域を使う場合、SYSTEM表領域を指定しないでください。 SYSTEM表領域を指定すると、インストールエラーで終了します) 【よくあるご質問】 領域はどの程度を見積もればよいですか? 【回答】 Statspackをインストールするには、最低約64MBが必要です。 スナップショット保存用に必要な領域のサイズは、スナップショットの回数、データベースの処理量などによって異なりますが、 まずは300MB~500MB程度を用意しておくとよいでしょう。

SQL> CREATE TABLESPACE tools

DATAFILE ‘D:¥oracle¥・・・¥tools.dbf’ SIZE 500M;

ファイルのパスを指定

USERS表領域 Tools表領域

Page 12: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

インストール・スクリプトの実行

12

Statspackのインストール

• スクリプトを実行してStatspackをインストールします

– スクリプトはデータベースのインストール時に配布済みです ORALCE_HOME/rdbms/admin/spcreate.sql

• インストール手順

– SQL*PLUSにSYSDBA権限を持つユーザーでログインします

– spcreate.sqlを実行します

– 対話型のスクリプトが実行されるので、指示に従って必要な項目を入力します (詳細は次ページ)

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

SQL> connect / as sysdba

SQL> @?/rdbms/admin/spcreate.sql

Page 13: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

インストール・スクリプトの実行

13

Statspackのインストール

• Statspackのインストール・スクリプトを実行すると、Statspack用のユーザーとして「PERFSTAT」が自動的に作成されます

• PERFSTATユーザーへの設定項目として、以下の項目を入力します

– PERFSTSTユーザーのパスワード

– デフォルト表領域

– 一時表領域

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

Choose the PERFSTAT user's password

perfstat_passwordに値を入力してください: ********

Choose the Default tablespace for the PERFSTAT user

default_tablespaceに値を入力してください: tools

Choose the Temporary tablespace for the PERFSTAT user

temporary_tablespaceに値を入力してください: temp

PERFSTATユーザーのパスワードを設定

p10で作成した 表領域名を入力

一時表領域を指定

Page 14: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 14

スナップショットの取得

• パフォーマンス・クリニックでは、一日分のStatspackレポートを分析することにより、システムのピークやボトルネックを把握することが可能です

• そのため、パフォーマンスクリニックを実施する際には、定期的に取得された複数のスナップショットが必要です。ここでは、スナップショットを取得する方法として以下の二つの方法をご案内します

– スナップショット取得プロシージャを利用して手動で取得する方法

– ジョブを作成して自動的に取得する方法

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

Page 15: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

プロシージャによる手動取得

15

スナップショットの取得

• PERFSTATユーザーで、スナップショット取得プロシージャ( statspack.snap )を 実行して、スナップショットを取得します。

• 取得したスナップショットは、stats$snapshot表で確認することが可能です。

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

SQL> connect PERFSTAT/********

SQL> execute statspack.snap

SQL> select snap_id,to_char(snap_time,‘yy-mm-dd hh24:mi:ss’) snap_time,

snap_level from stats$snapshot order by snap_id;

SNAP_ID SNAP_TIME SNAP_LEVEL

---------- ----------------- ----------

1 13-06-06 16:00:04 5

Page 16: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

ジョブによる自動取得

16

スナップショットの取得

• ジョブとは

– ジョブとは、実行する必要がある内容(処理)と 実行時期(スケジュール)の組合せのことです。 ジョブを作成することにより、処理を スケジュールに従って自動実行することが可能です。

• ジョブを作成する際には、以下の例を参考にして、 job_queue_processes初期化パラメータの値が0以上であることを確認してください。

※ job_queue_processesが0だと、ジョブが実行されません

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

SQL> show parameter job_queue_processes

NAME TYPE VALUE

------------------------------------ ----------- --------------------

job_queue_processes integer 1000

スナップショット スナップショット

10:00 11:00

Page 17: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

ジョブによる自動取得

17

スナップショットの取得

• ジョブの作成

– spauto.sqlスクリプトを実行すると、スナップショットを毎時取得するジョブが作成されます。

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

【perfstatユーザで下記を実行】

SQL> @?/rdbms/admin/spauto.sql

Job number for automated statistics collection for this instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

JOBNO ----------

44

Job queue process ~~~~~~~~~~~~~~~~~

NAME TYPE VALUE ------------------------------------ ----------- ------------------------------

job_queue_processes integer 1000

Next scheduled run ~~~~~~~~~~~~~~~~~~

JOB NEXT_DAT NEXT_SEC ---------- -------- ------------------------

44 13-06-06 16:00:00

0以上であることを 確認してください

次に実行される日時が表示されます

作成したジョブの 番号を確認できます

Page 18: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

ジョブによる自動取得

18

スナップショットの取得

• ジョブによって取得されたスナップショットは、stats$snapshot表で確認できます

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

注)スナップショットを大量に取得すると、その分必要な領域が増加します。 そのため、古くなったスナップショットを削除するなど、 必要に応じて取得したスナップショットのメンテナンスを行ってください。 (スナップショットの削除はp21をご参考ください)

【perfstatユーザで下記を実行】

SQL> select snap_id,to_char(snap_time,’yy-mm-dd hh24:mi:ss’) snap_time,

snap_level from stats$snapshot order by snap_id;

SNAP_ID SNAP_TIME SNAP_LEVEL

---------- ----------------- ----------

10 13-06-07 11:00:01 5

11 13-06-07 12:00:03 5

12 13-06-07 13:00:04 5

13 13-06-07 14:00:04 5

Page 19: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

ジョブによる自動取得

19

スナップショットの取得

• 目的のStatspackを取得した後はジョブを削除する必要があります

– 注)ジョブは明示的に削除や停止しない限り、動き続けています

• ジョブの確認

• ジョブの削除

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

SQL> EXECUTE DBMS_JOB.remove( 44 );

上で確認したジョブ番号を指定します

【perfstatユーザで下記を実行】

SQL> col 'what' format a20

SQL> select job,what where what='statspack.snap;';

JOB WHAT

---------- --------------------

44 statspack.snap;

ジョブを削除する場合には この番号を使用します

Page 20: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 20

レポートの作成

• PERFSTATユーザーで、レポート作成スクリプトを実行します

– スクリプトはデータベースインストール時に作成されています ORACLE_HOME/rdbms/admin/spreport.sql

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

SQL> connect PERFSTAT/********

SQL> @?/rdbms/admin/spreport.sql

Instance DB Name Snap Id Snap Started Level Comment ------------ ------------ --------- ----------------- ----- -------------------- orcl ORCL 9 07 Jun 2013 10:00 5 10 07 Jun 2013 11:00 5 11 07 Jun 2013 12:00 5

Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enter value for begin_snap: 10

Begin Snapshot Id specified: 10

Enter value for end_snap: 11

End Snapshot Id specified: 11

Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ Enter value for report_name: sp_10_11

取得済みスナップショットの一覧が

表示されます

レポート期間の開始/終了の Snap Idを指定します

レポートの名前を指定します。 指定しない場合、デフォルト値になります

Page 21: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 21

レポートの作成

• SQL*Plusを起動したディレクトリ直下にStatspackレポートが作成されます

• 前スライドの手順を繰り返して 必要な分だけレポートを作成し、 それらのレポートをご送付ください

Statspack レポート の作成

スナップ ショット の取得

Statspackの インストール

[oracle@xxxx ~]$ ls

sp_10_11.lst

結果レポート例 (テキスト形式)

Page 22: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

不要になったスナップショットの削除

22

Statspackのメンテナンス

• スナップショット・データを削除する場合

– インストール時に作成済みのsppurge.sqlスクリプトを実行 ORACLE_HOME/rdbms/admin/sppurge.sql

• 全スナップショット・データをまとめて削除する場合

– インストール時に作成済みのsptrunc.sqlスクリプトを実行 ORACLE_HOME/rdbms/admin/sptrunc.sql

SQL> connect / as sysdba

SQL> @?/rdbms/admin/spdrop.sql

SQL> connect PERFSTAT/********

SQL> @?/rdbms/admin/sppurge.sql

Enter value for losnapid: 1

Enter value for hisnapid: 5

Page 23: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |

Statspackのアンインストール

23

Statspackのメンテナンス

• Statspackのアンインストールを行うケース

– 環境にStatspackが不要になった場合

– インストールに失敗し、やり直したい場合

• アンインストール・スクリプトを実行

– スクリプトはデータベースインストール時に作成済み ORACLE_HOME/rdbms/admin/spdrop.sql

SQL> connect / as sysdba

SQL> @?/rdbms/admin/spdrop.sql

Page 24: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド

Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 24

Page 25: Oracle Direct 無償支援サービス ヒアリング・シート利用手順 · –マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド