Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
日本オラクル株式会社
パフォーマンス・クリニック・サービス
Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標
または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提
供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項
は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないた
め、購買決定を行う際の判断材料になさらないで下さい。
オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の
裁量により決定されます。
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
サービスのご利用にあたって
•
パフォーマンス・クリニックを実施される際には、
ヒアリングシートおよびStatspackレポートの情報が必要になります。
•
Statspackについて
–
可能であれば、1日分のレポートを取得してください。
(難しければ、それより少ない回数でも分析可能です)
–
スナップショットの取得間隔は60分で取得し、
間にデータベースの再起動を行わないでください
•
データベースの設定について
–
以下の初期化パラメータを変更している場合にはご注意ください。
•
9iR1までのバージョンの場合は、初期化パラメータTIMED_STATISTICSがTRUEに
設定されていることをご確認ください。
•
9iR2以降のバージョンでは、初期化パラメータSTATISTICS_LEVELがTYPICALに
設定されていることをご確認ください。
3
はじめに
Statspackとは
Statspack概要
Statspackを利用すると、ある期間で行われた処理の統計情報を取得できます
Stat
istics
Pack
age
パフォーマンス・チューニングに役立つ情報を
レポートという形で提供するツール
上記のような情報を利用して性能劣化の原因を分析します
データベースの 待機状況 メモリの ヒット率 トランザクション の傾向Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Statspackとは
5
Statspack概要
Statspackでは、まずある1時点での累積統計情報を取得します。
(これをスナップショットとよびます)
その後、ある2時点で取得した
内部統計データ
(スナップショット)の差分を元に、
その間のパフォーマンス統計データを
結果レポートに出力
します。
経過時間
累
積
統
計
情
報
A時点から B時点までの パフォーマンス 統計データ A時点 B時点 スナップ ショットA スナップ ショットBスナップショットとは
Statspack概要
•
「スナップショット」とは
–
ある時点に収集されたパフォーマンス統計データの集合です
これらの情報は、内部表(V$ビュー)から取得されます
–
取得される情報は、スナップショットのレベルによって異なります。
パフォーマンス・クリニックでは、「Level5 (デフォルト値) 」のスナップショットを取得して
ください。
レベル
基本統計
情報
アドバイス
情報
SQL
統計情報
SQL
詳細情報
セグメント
統計情報
ラッチ
統計情報
level 0
〇
〇
level 5
〇
〇
〇
level 6
〇
〇
〇
〇
level 7
〇
〇
〇
〇
〇
level 10
〇
〇
〇
〇
〇
〇
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
スナップショットの取得期間
7
Statspack概要
【よくあるご質問】
スナップショットはどのくらいの間隔で取得するのがいいでしょうか?
【回答】
30分~1時間程度の間隔で、常時取得をするのがよいでしょう。
長すぎると、統計データが平均化されて、特定の問題が検知しにくくなります。
また、問題発生時のみ取得しても、状況判断がしにくいため、「通常の状態」も取得しておくことをお勧めしま
す。 保存期間を決めて古くなったものは定期的に削除するようにしてください。
60分 60分 60分 60分 スナップショット スナップショット スナップショット スナップショット スナップショットスナップショット取得時の負荷について
Statspack概要
【よくあるご質問】
Statspack自体が負荷になることはないのでしょうか?
【回答】
Statspackの実態はプロシージャと実行スクリプトですので、インストールしたのみで、サーバの負荷に影響を
与えることはありません。またスナップショットの取得も、通常はそれほど負荷がかかることはありません。
(Level10のスナップショットでは負荷がかかる可能性があります)
スナップショット取得時には、内部表(V$ビュー)から情報を取得します
この際、主にCPUリソースを使用するため、
CPU負荷の高い時間を避けるなどの工夫が必要です
• 高負荷な時間を挟んで取得
• レポートの作成は負荷が低い時に実行
負荷少
負荷高
負荷少
スナップショット スナップショット レポート作成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のものと変わりませんので、上記のマニュアルをご確
認ください。
インストール作業を行う前に
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’;
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;
ファイルのパスを指定
インストール・スクリプトの実行
Statspackのインストール
•
スクリプトを実行してStatspackをインストールします
–
スクリプトはデータベースのインストール時に配布済みです
ORALCE_HOME/rdbms/admin/spcreate.sql
•
インストール手順
–
SQL*PLUSにSYSDBA権限を持つユーザーでログインします
–
spcreate.sqlを実行します
–
対話型のスクリプトが実行されるので、指示に従って必要な項目を入力します
(詳細は次ページ)
Statspack レポート の作成 スナップ ショット の取得 Statspackの インストールSQL> connect / as sysdba
SQL> @?/rdbms/admin/spcreate.sql
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で作成した 表領域名を入力 一時表領域を指定スナップショットの取得
•
パフォーマンス・クリニックでは、一日分のStatspackレポートを分析することにより、シ
ステムのピークやボトルネックを把握することが可能です
•
そのため、パフォーマンスクリニックを実施する際には、定期的に取得された複数のス
ナップショットが必要です。ここでは、スナップショットを取得する方法として以下の二
つの方法をご案内します
–
スナップショット取得プロシージャを利用して手動で取得する方法
–
ジョブを作成して自動的に取得する方法
Statspack レポート の作成 スナップ ショット の取得 Statspackの インストール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
ジョブによる自動取得
スナップショットの取得
•
ジョブとは
–
ジョブとは、実行する必要がある内容(処理)と
実行時期(スケジュール)の組合せのことです。
ジョブを作成することにより、処理を
スケジュールに従って自動実行することが可能です。
•
ジョブを作成する際には、以下の例を参考にして、
job_queue_processes初期化パラメータの値が0以上であることを確認してください。
※ job_queue_processesが0だと、ジョブが実行されません
Statspack レポート の作成 スナップ ショット の取得 Statspackの インストールSQL> show parameter job_queue_processes
NAME TYPE VALUE
--- --- --- job_queue_processes integer 1000
スナップショット スナップショット
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
ジョブによる自動取得
17
スナップショットの取得
•
ジョブの作成
–
spauto.sqlスクリプトを実行すると、スナップショットを毎時取得するジョブが作成されます。
Statspack レポート の作成 スナップ ショット の取得 Statspackの インストール 【perfstatユーザで下記を実行】 SQL> @?/rdbms/admin/spauto.sqlJob 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以上であることを 確認してください 次に実行される日時が 表示されます 作成したジョブの 番号を確認できます
ジョブによる自動取得
スナップショットの取得
•
ジョブによって取得されたスナップショットは、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
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;
ジョブを削除する場合には この番号を使用します
レポートの作成
•
PERFSTATユーザーで、レポート作成スクリプトを実行します
–
スクリプトはデータベースインストール時に作成されています
ORACLE_HOME/rdbms/admin/spreport.sql
Statspack レポート の作成 スナップ ショット の取得 Statspackの インストール SQL> connect PERFSTAT/******** SQL> @?/rdbms/admin/spreport.sqlInstance 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を指定します レポートの名前を指定します。 指定しない場合、デフォルト値になります
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
21
レポートの作成
•
SQL*Plusを起動したディレクトリ直下にStatspackレポートが作成されます
•
前スライドの手順を繰り返して
必要な分だけレポートを作成し、
それらのレポートをご送付ください
Statspack レポート の作成 スナップ ショット の取得 Statspackの インストール[oracle@xxxx ~]$ ls
sp_10_11.lst
結果レポート例
(テキスト形式)
不要になったスナップショットの削除
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
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |