Comments
Description
Transcript
Oracle Direct 無償支援サービス ヒアリング・シート利用手順
パフォーマンス・クリニック・サービス パフォーマンス診断ツール Statspackの使い方 日本オラクル株式会社 Copyright © 2016, Oracle and/or its affiliates. All rights reserved. | 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提 供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項 は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないた め、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の 裁量により決定されます。 Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標 または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 2 はじめに サービスのご利用にあたって • パフォーマンス・クリニックを実施される際には、 ヒアリングシートおよびStatspackレポートの情報が必要になります。 • Statspackについて – 可能であれば、1日分のレポートを取得してください。 (難しければ、それより少ない回数でも分析可能です) – スナップショットの取得間隔は60分で取得し、 間にデータベースの再起動を行わないでください • データベースの設定について – 以下の初期化パラメータを変更している場合にはご注意ください。 • 9iR1までのバージョンの場合は、初期化パラメータTIMED_STATISTICSがTRUEに 設定されていることをご確認ください。 • 9iR2以降のバージョンでは、初期化パラメータSTATISTICS_LEVELがTYPICALに 設定されていることをご確認ください。 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 3 Statspack概要 Statspackとは Statistics Package パフォーマンス・チューニングに役立つ情報を レポートという形で提供するツール Statspackを利用すると、ある期間で行われた処理の統計情報を取得できます メモリの ヒット率 トランザクション の傾向 データベースの 待機状況 上記のような情報を利用して性能劣化の原因を分析します Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 4 Statspack概要 Statspackとは Statspackでは、まずある1時点での累積統計情報を取得します。 (これをスナップショットとよびます) その後、ある2時点で取得した内部統計データ(スナップショット)の差分を元に、 その間のパフォーマンス統計データを結果レポートに出力します。 累 積 統 計 情 報 A時点から B時点までの パフォーマンス 統計データ スナップ ショットA A時点 スナップ ショットB B時点 経過時間 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 5 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. | ラッチ 統計情報 〇 6 Statspack概要 スナップショットの取得期間 【よくあるご質問】 スナップショットはどのくらいの間隔で取得するのがいいでしょうか? 60分 スナップショット 60分 スナップショット 60分 スナップショット 60分 スナップショット スナップショット 【回答】 30分~1時間程度の間隔で、常時取得をするのがよいでしょう。 長すぎると、統計データが平均化されて、特定の問題が検知しにくくなります。 また、問題発生時のみ取得しても、状況判断がしにくいため、「通常の状態」も取得しておくことをお勧めしま す。 保存期間を決めて古くなったものは定期的に削除するようにしてください。 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 7 Statspack概要 スナップショット取得時の負荷について 【よくあるご質問】 Statspack自体が負荷になることはないのでしょうか? 【回答】 Statspackの実態はプロシージャと実行スクリプトですので、インストールしたのみで、サーバの負荷に影響を 与えることはありません。またスナップショットの取得も、通常はそれほど負荷がかかることはありません。 (Level10のスナップショットでは負荷がかかる可能性があります) スナップショット取得時には、内部表(V$ビュー)から情報を取得します この際、主にCPUリソースを使用するため、 CPU負荷の高い時間を避けるなどの工夫が必要です 負荷高 負荷少 • 高負荷な時間を挟んで取得 • レポートの作成は負荷が低い時に実行 スナップショット Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 負荷少 スナップショット レポート作成 8 Statspackのインストール Statspackの インストール スナップ ショット の取得 Statspack レポート の作成 インストール・ガイド • Statspackのインストール・ガイドとしては以下のものがあります – マニュアル 「Oracle9i データベース・パフォーマンス・チューニング・ガイド およびリファレンス リリース2(9.2)」 21. Statspackの使用方法 http://otndnld.oracle.co.jp/document/oracle9i/920/generic/ server/J06248-02.pdf 自動診断機能の強化に伴い、10g以降のマニュアルからはStatspackの内容に関 する説明が省かれています。 Statspackは10g以降でも9iR2のものと変わりませんので、上記のマニュアルをご確 認ください。 – SPDOC.TXTファイル • ORACLE_HOME/rdbms/adminに用意されています • Statspackパッケージに関する説明(英語) Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 9 Statspackのインストール Statspackの インストール スナップ ショット の取得 Statspack レポート の作成 インストール作業を行う前に • 既にStatspackがインストールされている場合はページ10~ページ12の 作業は行わずに、ページ13「Statspackの実行」へ進んでください ※Statspackが既にインストールされている状態で再度spcreate.sqlを実行して インストールを行うとエラーが発生します • 既にStatspackがインストールされているかどうかの確認は、 以下の方法で「PERFSTAT」ユーザーが存在しているか確認してください 存在する場合は既にインストールがされています SQL*PLUSに管理者権限を持つユーザーでログインし、以下のSQLを実行 SQL> SELECT user_id, username FROM dba_users WHERE username = ‘PERFSTAT’; Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 10 Statspackの インストール Statspackのインストール USERS表領域 インストール前の準備 • Statspack情報格納用の表領域を作成 例)「Tools」表領域を作成します スナップ ショット の取得 Statspack レポート の作成 Tools表領域 ファイルのパスを指定 SQL> CREATE TABLESPACE tools DATAFILE ‘D:¥oracle¥・・・¥tools.dbf’ SIZE 500M; 【よくあるご質問】 既存の表領域を使っても良いのでしょうか? 【回答】 はい、可能です。ただし管理上の理由から、ユーザーデータと分離することをお勧めします。 専用の領域を用意しておけば、不要になったときに、領域をまとめて削除することが可能です。 (既存の表領域を使う場合、SYSTEM表領域を指定しないでください。 SYSTEM表領域を指定すると、インストールエラーで終了します) 【よくあるご質問】 領域はどの程度を見積もればよいですか? 【回答】 Statspackをインストールするには、最低約64MBが必要です。 スナップショット保存用に必要な領域のサイズは、スナップショットの回数、データベースの処理量などによって異なりますが、 まずは300MB~500MB程度を用意しておくとよいでしょう。 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 11 Statspackのインストール Statspackの インストール スナップ ショット の取得 Statspack レポート の作成 インストール・スクリプトの実行 • スクリプトを実行してStatspackをインストールします – スクリプトはデータベースのインストール時に配布済みです ORALCE_HOME/rdbms/admin/spcreate.sql • インストール手順 – SQL*PLUSにSYSDBA権限を持つユーザーでログインします – spcreate.sqlを実行します SQL> connect / as sysdba SQL> @?/rdbms/admin/spcreate.sql – 対話型のスクリプトが実行されるので、指示に従って必要な項目を入力します (詳細は次ページ) Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 12 Statspackの インストール Statspackのインストール スナップ ショット の取得 Statspack レポート の作成 インストール・スクリプトの実行 • Statspackのインストール・スクリプトを実行すると、Statspack用のユーザーとして 「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で作成した 表領域名を入力 一時表領域を指定 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 13 Statspackの インストール スナップショットの取得 スナップ ショット の取得 Statspack レポート の作成 • パフォーマンス・クリニックでは、一日分のStatspackレポートを分析することにより、シ ステムのピークやボトルネックを把握することが可能です • そのため、パフォーマンスクリニックを実施する際には、定期的に取得された複数のス ナップショットが必要です。ここでは、スナップショットを取得する方法として以下の二 つの方法をご案内します – スナップショット取得プロシージャを利用して手動で取得する方法 – ジョブを作成して自動的に取得する方法 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 14 Statspackの インストール スナップショットの取得 スナップ ショット の取得 Statspack レポート の作成 プロシージャによる手動取得 • 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 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 15 Statspackの インストール スナップショットの取得 スナップ ショット の取得 Statspack レポート の作成 ジョブによる自動取得 • ジョブとは – ジョブとは、実行する必要がある内容(処理)と 実行時期(スケジュール)の組合せのことです。 ジョブを作成することにより、処理を スケジュールに従って自動実行することが可能です。 スナップショット 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 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 16 Statspackの インストール スナップショットの取得 スナップ ショット の取得 Statspack レポート の作成 ジョブによる自動取得 • ジョブの作成 – 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 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 17 Statspackの インストール スナップショットの取得 スナップ ショット の取得 Statspack レポート の作成 ジョブによる自動取得 • ジョブによって取得されたスナップショットは、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をご参考ください) Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 18 Statspackの インストール スナップショットの取得 スナップ ショット の取得 Statspack レポート の作成 ジョブによる自動取得 • 目的のStatspackを取得した後はジョブを削除する必要があります – 注)ジョブは明示的に削除や停止しない限り、動き続けています • ジョブの確認 【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 ); Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 19 Statspackの インストール レポートの作成 スナップ ショット の取得 Statspack レポート の作成 • 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 レポートの名前を指定します。 指定しない場合、デフォルト値になります Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 20 レポートの作成 Statspackの インストール スナップ ショット の取得 Statspack レポート の作成 • SQL*Plusを起動したディレクトリ直下にStatspackレポートが作成されます [oracle@xxxx ~]$ ls sp_10_11.lst • 前スライドの手順を繰り返して 必要な分だけレポートを作成し、 それらのレポートをご送付ください 結果レポート例 (テキスト形式) Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 21 Statspackのメンテナンス 不要になったスナップショットの削除 • スナップショット・データを削除する場合 – インストール時に作成済みの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 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 22 Statspackのメンテナンス Statspackのアンインストール • Statspackのアンインストールを行うケース – 環境にStatspackが不要になった場合 – インストールに失敗し、やり直したい場合 • アンインストール・スクリプトを実行 – スクリプトはデータベースインストール時に作成済み ORACLE_HOME/rdbms/admin/spdrop.sql SQL> connect / as sysdba SQL> @?/rdbms/admin/spdrop.sql Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 23 Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 24