パフォーマンス クリニック サービス パフォーマンス診断ツール の使い方 日本オラクル株式会社 Copyright 2016, Oracle and/or its affiliates. All rights reserved.
以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらないで下さい オラクル製品に関して記載されている機能の開発 リリースおよび時期については 弊社の 裁量により決定されます Oracle は 米国オラクル コーポレーション及びその子会社 関連会社の米国及びその他の国における登録商標または商標です 他社名又は製品名は それぞれ各社の商標である場合があります 2
はじめに サービスのご利用にあたって パフォーマンス クリニックを実施される際には ヒアリングシートおよび レポートの情報が必要になります について 可能であれば 1 日分のレポートを取得してください ( 難しければ それより少ない回数でも分析可能です ) ショットの取得間隔は 60 分で取得し 間にデータベースの再起動を行わないでください データベースの設定について 以下の初期化パラメータを変更している場合にはご注意ください 9iR1 までのバージョンの場合は 初期化パラメータ TIMED_STATISTICS が TRUE に設定されていることをご確認ください 9iR2 以降のバージョンでは 初期化パラメータ STATISTICS_LEVEL が TYPICAL に設定されていることをご確認ください 3
概要 とは Statistics Package パフォーマンス チューニングに役立つ情報を レポートという形で提供するツール を利用すると ある期間で行われた処理の統計情報を取得できます メモリの ヒット率 トランザクション の傾向 データベースの 待機状況 上記のような情報を利用して性能劣化の原因を分析します 4
概要 とは では まずある1時点での累積統計情報を取得します これをショットとよびます その後 ある2時点で取得した内部統計データ ショット の差分を元に その間のパフォーマンス統計データを結果レポートに出力します 累 積 統 計 情 報 A時点から B時点までの パフォーマンス 統計データ ショットA A時点 ショットB B時点 経過時間 5
概要 ショットとは ショット とは ある時点に収集されたパフォーマンス統計データの集合です これらの情報は 内部表 V$ビュー から取得されます 取得される情報は ショットのレベルによって異なります パフォーマンス クリニックでは Level5 デフォルト値 のショットを取得して ください レベル 基本統計 情報 アドバイス 情報 SQL 統計情報 SQL 詳細情報 セグメント 統計情報 level 0 level 5 level 6 level 7 level 10 ラッチ 統計情報 6
概要 ショットの取得期間 よくあるご質問 ショットはどのくらいの間隔で取得するのがいいでしょうか 60分 ショット 60分 ショット 60分 ショット 60分 ショット ショット 回答 30分 1時間程度の間隔で 常時取得をするのがよいでしょう 長すぎると 統計データが平均化されて 特定の問題が検知しにくくなります また 問題発生時のみ取得しても 状況判断がしにくいため 通常の状態 も取得しておくことをお勧めしま す 保存期間を決めて古くなったものは定期的に削除するようにしてください 7
概要 ショット取得時の負荷について よくあるご質問 自体が負荷になることはないのでしょうか 回答 の実態はプロシージャと実行スクリプトですので インストールしたのみで サーバの負荷に影響を 与えることはありません またショットの取得も 通常はそれほど負荷がかかることはありません Level10のショットでは負荷がかかる可能性があります ショット取得時には 内部表 V$ビュー から情報を取得します この際 主にCPUリソースを使用するため CPU負荷の高い時間を避けるなどの工夫が必要です 負荷高 負荷少 高負荷な時間を挟んで取得 レポートの作成は負荷が低い時に実行 ショット 負荷少 ショット レポート作成 8
のインストール の インストール ショット の取得 レポート の作成 インストール ガイド のインストール ガイドとしては以下のものがあります マニュアル Oracle9i データベース パフォーマンス チューニング ガイド およびリファレンス リリース2(9.2) 21. の使用方法 http://otndnld.oracle.co.jp/document/oracle9i/920/generic/ server/j06248-02.pdf 自動診断機能の強化に伴い 10g以降のマニュアルからはの内容に関 する説明が省かれています は10g以降でも9iR2のものと変わりませんので 上記のマニュアルをご確 認ください SPDOC.TXTファイル ORACLE_HOME/rdbms/adminに用意されています パッケージに関する説明 英語 9
のインストール の インストール ショット の取得 レポート の作成 インストール作業を行う前に 既にがインストールされている場合はページ10 ページ12の 作業は行わずに ページ13 の実行 へ進んでください が既にインストールされている状態で再度spcreate.sqlを実行して インストールを行うとエラーが発生します 既にがインストールされているかどうかの確認は 以下の方法で PERFSTAT ユーザーが存在しているか確認してください 存在する場合は既にインストールがされています SQL*PLUSに管理者権限を持つユーザーでログインし 以下のSQLを実行 SQL> SELECT user_id, username FROM dba_users WHERE username = PERFSTAT ; 10
の インストール のインストール USERS表領域 インストール前の準備 情報格納用の表領域を作成 例 Tools 表領域を作成します ショット の取得 レポート の作成 Tools表領域 ファイルのパスを指定 SQL> CREATE TABLESPACE tools DATAFILE D: oracle tools.dbf SIZE 500M; よくあるご質問 既存の表領域を使っても良いのでしょうか 回答 はい 可能です ただし管理上の理由から ユーザーデータと分離することをお勧めします 専用の領域を用意しておけば 不要になったときに 領域をまとめて削除することが可能です 既存の表領域を使う場合 SYSTEM表領域を指定しないでください SYSTEM表領域を指定すると インストールエラーで終了します よくあるご質問 領域はどの程度を見積もればよいですか 回答 をインストールするには 最低約64MBが必要です ショット保存用に必要な領域のサイズは ショットの回数 データベースの処理量などによって異なりますが まずは300MB 500MB程度を用意しておくとよいでしょう 11
のインストール の インストール ショット の取得 レポート の作成 インストール スクリプトの実行 スクリプトを実行してをインストールします スクリプトはデータベースのインストール時に配布済みです ORALCE_HOME/rdbms/admin/spcreate.sql インストール手順 SQL*PLUSにSYSDBA権限を持つユーザーでログインします spcreate.sqlを実行します SQL> connect / as sysdba SQL> @?/rdbms/admin/spcreate.sql 対話型のスクリプトが実行されるので 指示に従って必要な項目を入力します 詳細は次ページ 12
の インストール のインストール ショット の取得 レポート の作成 インストール スクリプトの実行 のインストール スクリプトを実行すると 用のユーザーとして PERFSTAT が自動的に作成されます PERFSTATユーザーへの設定項目として 以下の項目を入力します PERFSTSTユーザーのパスワード デフォルト表領域 一時表領域 Choose the PERFSTAT user's password perfstat_passwordに値を入力してください: ******** PERFSTATユーザーのパスワード を設定 Choose the Default tablespace for the PERFSTAT user default_tablespaceに値を入力してください: tools Choose the Temporary tablespace for the PERFSTAT user temporary_tablespaceに値を入力してください: temp p10で作成した 表領域名を入力 一時表領域を指定 13
ショットの取得 のインストール ショットの取得 レポートの作成 パフォーマンス クリニックでは 一日分の レポートを分析することにより システムのピークやボトルネックを把握することが可能です そのため パフォーマンスクリニックを実施する際には 定期的に取得された複数のショットが必要です ここでは ショットを取得する方法として以下の二つの方法をご案内します ショット取得プロシージャを利用して手動で取得する方法 ジョブを作成して自動的に取得する方法 14
の インストール ショットの取得 ショット の取得 レポート の作成 プロシージャによる手動取得 PERFSTATユーザーで ショット取得プロシージャ statspack.snap を 実行して ショットを取得します SQL> connect PERFSTAT/******** SQL> execute statspack.snap 取得したショットは stats$snapshot表で確認することが可能です 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 15
の インストール ショットの取得 ショット の取得 レポート の作成 ジョブによる自動取得 ジョブとは ジョブとは 実行する必要がある内容 処理 と 実行時期 スケジュール の組合せのことです ジョブを作成することにより 処理を スケジュールに従って自動実行することが可能です ショット 10:00 ショット 11:00 ジョブを作成する際には 以下の例を参考にして job_queue_processes初期化パラメータの値が0以上であることを確認してください job_queue_processesが0だと ジョブが実行されません SQL> show parameter job_queue_processes NAME TYPE VALUE ------------------------------------ ----------- -------------------job_queue_processes integer 1000 16
の インストール ショットの取得 ショット の取得 レポート の作成 ジョブによる自動取得 ジョブの作成 spauto.sqlスクリプトを実行すると ショットを毎時取得するジョブが作成されます perfstatユーザで下記を実行 SQL> @?/rdbms/admin/spauto.sql Job number for automated statistics collection for this instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 作成したジョブの JOBNO ---------番号を確認できます 44 0以上であることを 確認してください 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 17
の インストール ショットの取得 ショット の取得 レポート の作成 ジョブによる自動取得 ジョブによって取得されたショットは stats$snapshot表で確認できます 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 ---------10 11 12 13 SNAP_TIME SNAP_LEVEL ----------------- ---------13-06-07 11:00:01 5 13-06-07 12:00:03 5 13-06-07 13:00:04 5 13-06-07 14:00:04 5 注 ショットを大量に取得すると その分必要な領域が増加します そのため 古くなったショットを削除するなど 必要に応じて取得したショットのメンテナンスを行ってください ショットの削除はp21をご参考ください 18
の インストール ショットの取得 ショット の取得 レポート の作成 ジョブによる自動取得 目的のを取得した後はジョブを削除する必要があります 注 ジョブは明示的に削除や停止しない限り 動き続けています ジョブの確認 perfstatユーザで下記を実行 SQL> col 'what' format a20 SQL> select job,what where what='statspack.snap;'; JOB WHAT ---------- -------------------44 statspack.snap; ジョブを削除する場合には この番号を使用します ジョブの削除 上で確認したジョブ 番号を指定します SQL> EXECUTE DBMS_JOB.remove( 44 ); 19
の インストール レポートの作成 ショット の取得 レポート の作成 PERFSTATユーザーで レポート作成スクリプトを実行します スクリプトはデータベースインストール時に作成されています ORACLE_HOME/rdbms/admin/spreport.sql 取得済みショット の一覧が 表示されます 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 Snap Idを指定します Enter value for end_snap: 11 End Snapshot Id specified: 11 Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ Enter value for report_name: sp_10_11 レポートの名前を指定します 指定しない場合 デフォルト値になります 20
レポートの作成 の インストール ショット の取得 レポート の作成 SQL*Plusを起動したディレクトリ直下にレポートが作成されます [oracle@xxxx ~]$ ls sp_10_11.lst 前スライドの手順を繰り返して 必要な分だけレポートを作成し それらのレポートをご送付ください 結果レポート例 テキスト形式 21
のメンテナンス 不要になったショットの削除 ショット データを削除する場合 インストール時に作成済みの sppurge.sql スクリプトを実行 ORACLE_HOME/rdbms/admin/sppurge.sql SQL> connect PERFSTAT/******** SQL> @?/rdbms/admin/sppurge.sql Enter value for losnapid: 1 Enter value for hisnapid: 5 全ショット データをまとめて削除する場合 インストール時に作成済みの sptrunc.sql スクリプトを実行 ORACLE_HOME/rdbms/admin/sptrunc.sql SQL> connect / as sysdba SQL> @?/rdbms/admin/spdrop.sql 22
のメンテナンス のアンインストール のアンインストールを行うケース 環境に が不要になった場合 インストールに失敗し やり直したい場合 アンインストール スクリプトを実行 スクリプトはデータベースインストール時に作成済み ORACLE_HOME/rdbms/admin/spdrop.sql SQL> connect / as sysdba SQL> @?/rdbms/admin/spdrop.sql 23
24