oracle statspack とは 4


t���������+[�};?�]�� �;?�P�_����Z�z~����h���;^�O�ﷅ�x{sW����_��d�BWF֪ ---------------------------, RETENTION Statspackは、Oracleの性能分析をするためのレポートを作成するOracleデータベース標準のツールです。 OracleデータベースのOracle8iから登場し、Enterprise Editionだけでなく、Standard Editionでも使用できるため、全ての環境で使用することができます。

3 Statspack StatspackはOracleの性能分析をするためのレポートを作成するOracleデータベース標準のツールで、Oracle8iから登場しました。OracleデータベースのEnterprise Editionだけでなく、Standard Editionでも使用できるため、全ての環境で使用することができます。 var vc_pid = "886398132"; x��ZKo#7����Z�Y,���V&��Y;{��$�g�X�Ճ�h�����/V��f������.���ß�^\����Ż����7���W���?�=//��vS����.vP��Lq����~���V� 収集レベルは初期化パラメータのstatistics_levelを表しています。デフォルトはTYPICALです。より低いレベルのBASICでは分析に必要な様々な情報が不足したり、AWRとは関係のない他の機能が必要とする情報も欠落してしまいます。また、より高いレベルのALLにするとより多くの情報を取得するため、通常の処理への負荷が無視できなくなります。通常の分析であればTYPICALで十分です。これはStatspackでも同じことがいえます。なお、AWRではTYPICALの場合、Statspackのi_snap_level 7相当の情報が取得されます。, AWRも保存しているスナップショット数が多くなれば表領域の使用率が高くなります。SYSAUX表領域も忘れずに領域監視を行い、必要に応じてスナップショット周期や保存期間を調節しましょう。, SQL*Plusなどのコマンドプロンプトで内容確認、変更をしたい場合は、それぞれDBA_HIST_WR_CONTROLとDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGSを使用します。DBA_HIST_WR_CONTROLのSNAP_INTERVAL列がスナップショットの周期で、RETENTION列が保存期間です。次の例では1時間周期7日間保存の設定を30分周期10日間保存に変更しています。, AWRレポートおよびAWR SQL レポートはStatspackにも同様のレポートがありますが、AWR期間比較レポートはAWRでのみ提供されるレポートです。では、それぞれのレポートの作成方法を見ていきましょう。, AWRレポートの作成は次の通りです(図1-7)。AWRレポートの作成もOracle EMによるGUI操作で作成することができます。作成にはStatspackと同じように、スナップショットの開始、終了IDを指定します。, レポート作成画面において、各種リンクやボタンをクリックしていると、「アクション」メニューの選択がデフォルトの「保存スナップショット・セットの作成」に戻ってしまうことがあります。当然そのまま実行してしまうと、「保存スナップショット・セットの作成」を行ってしまうことになります。「実行」ボタンをクリックする前に、選択されているメニューが「レポートの表示」になっているかどうかを確認しましょう。, 既に説明している通り、デフォルトの設定ではスナップショットは7日間保存です。8日以上前のデータを保存しておきたい場合は保存期間を長くすればいいのですが、保存されるデータ量が増えてしまうため、当然表領域の使用率が高くなってしまいます。そこで、保存スナップショット・セットが役に立ちます。重要なイベントがあったとき(月末バッチの時間帯、性能トラブルが起こった時間帯、基本となる性能モデルのワークロードを流した時間帯、等)のスナップショットをこの機能で保存しておくことで、その期間のスナップショットは、保存期間を過ぎても削除されなくなります。無駄な領域を使用せずに、重要な情報だけ保存したい場合に便利です。コマンドラインから実行したい場合は、DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINEを使用します。, AWRレポートを作成すると、画面上にAWRレポートがHTML形式で表示されます(図1-8)。作成したAWRレポートは「ファイルに保存」ボタンをクリックして保存しておきましょう。, コマンドラインでレポートを作成する場合はSYSTEMユーザやSYSDBA権限のユーザでawrrpt.sqlを実行することで作成可能です(図1-9)。操作方法はStatspackとほぼ同じですが、num_daysの入力を求められるところが異なる点です。これはスナップショットの一覧表示期間を過去何日間にするか指定するための入力パラメータです。たとえば、今日のレポートを作成したい場合は、昨日以前のスナップショットIDを知る必要がないわけですから、スナップショット一覧を1日と指定すれば見やすくなります。また、awrrpt.sqlを使用すれば、HTML形式だけではなく、TEXT形式のレポートも作成可能です。, 10g R2より、AWRでもSQLの詳細レポートを作成することが可能になりました。ただし、10g R2ではGUIによるSQLレポート作成には一部制限があるため、AWR SQLレポートの作成にはawrsqrpt.sqlを使用します。AWRレポートのスナップショットIDと分析したいSQLのSQL IDを事前に調べておき、awrsqrpt.sqlの入力パラメータとして指定します(図1-10)。, ここで紹介したAWR SQL レポートとは異なりますが、下記に関しては表示されるSQL IDをクリックすることにより、Oracle EMのGUI画面よりSQL詳細情報を参照することが可能です。, AWRには期間比較レポートというものもあり、10g R2の新機能です。これはある2つのAWRレポートを並べて比較することができるレポートです(図1-11)。たとえば、性能トラブルが起こった際に、通常に運用できていた期間と比較して何が原因なのかを分析したいときに便利です。また、性能改善の対処を実施した後で性能改善対処前のレポートと、改善後のレポートを比較して、その効果を確かめたいときにも便利でしょう。, AWR期間比較レポートの作成は次の通りです。まず比較対象となる1つ目のスナップショット期間を指定します(図1-12)。, すると、指定した2つの期間を対象としたレポートが表示されます(図1-14)。このレポートも「ファイルに保存」ボタンで保存可能です。, 実際に作成したレポートはこちらです。 stream ASHによって自動取得 よく読まれている記事. <> STATSPACKとは、データベース統計全体を長期間にわたって取得できるツールです。アプリケーションの特定の処理期間の中で、時間を遡ってデータベース動作の分析ができるという特徴があります この時間指向の性質を活用することにより、以下のような場面に活用できます ・データベースのチューニング ・傾向分析 ・パフォーマンス問題の事後分析 ・リソース計画の立案 ・予測モデルの作成 STATSPACKは指示した2時点間の内部統計データの差分を取得し、レポート出力します STATSPACKは性能障害 … Oracleデータベースの性能対策の重要な機能、「Statspack」や「Oracle Enterprise Manager 10g Diagnostics Pack」(※オプションライセンス)の利用ポイントをお伝えします。使わないと"もったいない"機能です!(Diagnostics Packの有無による違いはここ) Oracleが提供する内部統計情報の取得・出力ツールです。パフォーマンス・チューニングをする上で最も強力なツールです。実行計画やV$(動的パフォーマンスビュー)等と合わせて活用することで、より有効に活用することができます, STATSPACKとは、データベース統計全体を長期間にわたって取得できるツールです。アプリケーションの特定の処理期間の中で、時間を遡ってデータベース動作の分析ができるという特徴があります, STATSPACKは指示した2時点間の内部統計データの差分を取得し、レポート出力します, STATSPACKは性能障害が発生している箇所が分かっている場合は有効ですが、性能障害を見つけ出すための監視ツールとしては不向きです, STATSPACKには取得レベルがあります。STATSPACKは取得レベルによって、得られる情報が違います。パラメータを変更することで、スナップショットが取得する情報を変更することができます, 5.Load Profile:レポート取得期間中の1秒あたり(Per Second)とトランザクションあたり(Per Transaction)の統計情報。システムの特性・傾向を見ることができる, 6.Instance Efficiency Indicators:インスタンス効率の指標。100% に近いほど良い。目標値(別紙参照), 7.Top 5 Timed Events:総待ち時間(Wait Time)の長い待機イベントトップ5の情報, 11.Time Model System Stats:データベースのCPUに関する詳細情報, 12.Foreground Wait Events:Foregroundの待機イベントに関する情報, 13.Background Wait Events:Backgroundの待機イベントに関する情報, 14.Wait Events (fg and bg):Foreground及びBackgroundの待機イベントに関する情報, 15.SQL ordered by CPU:SQLに関する情報(CPU負荷の高い順), 16.SQL ordered by Elapsed:SQLに関する情報(Elapse Timeの長い順), 17.SQL ordered by Gets:SQLに関する情報(バッファ読込の多い順), 18.SQL ordered by Reads:SQLに関する情報(DISK読込の多い順), 19.SQL ordered by Executions:SQLに関する情報(実行回数の多い順), 20.SQL ordered by Parse Calls:SQLに関する情報(解析回数の多い順), 21.Instance Activity Stats:インスタンスの稼働に関する情報, 26.File Read Histogram Stats:ファイル読込に関する情報, 27.Instance Recovery Stats:インスタンスのリカバリーに関する情報, 28.Memory Dynamic Components:メモリ割り当てに関する情報, 29.Buffer Pool Advisory:バッファキャッシュの見積に関する情報, 30.Buffer Pool Statistics:バッファキャッシュに関する情報, 31.Buffer wait Statistics:バッファキャッシュの待機に関する情報, 32.PGA Aggr Target Stats:PGA集計ターゲット統計(PGA Aggregate Target Statistics)に関する情報, 33.PGA Aggr Target Histogram:Optimal Executions are purely in-memory operations, 35.Process Memory Summary Stats:プロセスメモリのサマリ情報, 36.Top Process Memory (by component):各プロセスが占有している共有メモリに関する情報, 46.Segments by Logical Reads:セグメントの論理読込に関する情報, 47.Segments by Physical Reads:セグメントの物理読込に関する情報, 48.Segments by Row Lock Waits:セグメントの行ロックに関する情報, 49.Segments by Buffer Busy Waits:セグメントのバッファ競合に関する情報, 50.Dictionary Cache Stats:ディクショナリキャッシュに関する情報, 51.Library Cache Activity:ライブラリキャッシュの稼働状況, 52.Rule Sets:Oracle Streamsクライアントの動作ルールに関する情報, 53.Streams Pool Advisory:ストリーム・プールサイズの見積に関する情報(連続したデータのやり取り領域), 54.Shared Pool Advisory:共有プールサイズの見積に関する情報, 55.SGA Target Advisory:SGAターゲットサイッズの見積に関する情報, 57.SGA breakdown difference:SGAメモリの各領域の詳細情報, 58.SQL Memory Statistics:CURSORのメモリ使用に関する情報.
4 0 obj statspack 詳細レポート(sprepsqlスクリプト)の作成と見方 statspack 詳細レポートを出力すると、実行されたsql 文の実行統計と実行計画 の調査ができる なお、statspack 詳細レポートを出力するスクリプト実行には、実行したsql 文 に対するold_hash_value 値が必要である あなたが運用しているDBが断片化しているかどうかを確認し、健全な状態にDBを保ちましょう。, SQLHCを利用したことはありますか? <>>>

資料の概要 日付:2010/07/28 種別:セミナー動画/資料 Statspack の簡単な解析方法と解析例をご紹介します。また、代表的な待機イベントとその意味についても解説します。データベースシステムのパフォーマンスにお悩みの皆様必見です。 Statspack とは? Oracle Databaseを運用している中で、STATSPACKやAWRを定期的に取得して、分析や性能改善を行ったりしていますか? 定期的に見ることは無くても、性能問題や障害のタイミングで見たことがある人は多いと思います。 まずは、そもそもSTATSPACKって何?どんな情報が取得できるの? 1 0 obj V$SESSIONを定期的に取得、保存する仕組みを作成する必要あり, ASHを分析することで可能 l'�Cyu�\_�k6?�eM���`K�z��������� Statspackは、Oracle Database 8iから提供されているデータベース性能診断ツールです。追加費用なし、かつエディションの制限なしに利用可能なため、だれでも使用できます。 <>

Statspackレポート作成 本項では、STATSPACKレポート作成手順を紹介します。 スナップショットで採取した統計情報はレポート出力することが可能です。なお、統計情報を取得するために初期化パラメータ timed_statisticsがtrueになっている必要があります。 %���� endobj 今回のAWRレポートで見つかるこれらのSQLは、前回のStatspackレポートの「SQL ordered by Reads」セクションでは表示されませんでした。正確に言うと「SQL ordered by Reads」セクションそのものがありませんでした。なぜでしょう。以下は、Statspackレポートに「SQL ordered by Reads」セクションが表示されたときのレポートの抜粋です。, 一番下の欄に「SQL reported below exceeded 1.0% of Total Disk Reads」とあります。つまり、個々のSQLが全体のSQLに占める割合として1.0%に満たないものはこのセクションに表示されません。また、すべてのSQLが1.0%未満であれば、このセクションそのものがレポートに表示されないことになります。しかし、AWRレポートの各「SQL ordered」セクションにはこの記述がありません。よって、今回Statspackよりも多くのSQLを見つけることができたわけです。, では、そのSQLの内容詳細を調べるため、AWR SQLレポートを確認しましょう。ここでは、SQL Idが「b7twbdp012nbw」のAWR SQLレポートを作成します。作成したAWR SQLレポートはこちらです。, Execution Plan欄からEMP1表をFull Scanしていること、およびPlan Statistics欄からElapsed TimeとCPU Timeがほぼ同じであることがわかります。つまり、表のFull Scanをしてはいるけれど、I/Oネックではないことがわかります(図3-6)。, レポートにあるPlan Hash Valueは実行計画ごとに付与された値です。つまり、同じ実行計画であれば同じPlan Hash Valueが付与されます。今回は、SQL Idが「b7twbdp012nbw」のもののAWR SQLレポートですが、表3-1のほかのSQLのAWR SQLレポートを作成すると、特別な理由(*)がない限り、同じPlan Hash Valueとなります。, (*) 今回のSQLの例では、たとえばリテラルの値の違いによって使用する索引が異なる場合があれば。, さて、このSQLはなぜ表をFull Scanしているのでしょうか。EMP1表の索引を確認しましょう。, どうやらemp1no列に対する索引がないようです。念のため、emp1no列のカーディナリティも確認しましょう。, 各レコードのemp1no列の値は、その表の中で一意の値をとっていることがわかります。つまり、この列に索引が作成されていれば表のFull Scanを避けることができ、先ほどのSQLは効率のいい処理になっていたことになります。表3-1のSQLはすべて同じタイプのSQLであるため、これらもこの索引があれば高速な処理になるはずです。今回のCPUネックである原因が、この索引がないことによる疑いが高まってきました。, 対象期間の全体の統計を表していたAWRレポートの視点とは異なり、セッション単位の視点から統計を表しているのがAWRレポートです。それぞれ異なった視点で性能統計情報をとらえているので、AWRレポートではわからない事象が見つかることがありますのでこちらも確認しましょう。作成したASHレポートはこちらです。(レポート作成、参照方法はこちらをご覧ください。), 今回のASHレポートでも、性能問題を引き起こしている原因のSQLを特定するための重要なヒントを見つけることができます。先ほどはAWRレポートのSQL ordered byセクションから類似のSQLを目視で見つけ出しましたが、ASHレポートではこの分析結果を記述しているセクションがあります。Top SQL using literalsセクションでは、リテラルを使用しているために、Plan Hash Valueが同じなのに異なるSQLとして認識されているSQLを抽出してくれます(図3-7)。, 図3-7 ASHレポート Top SQL using literals(拡大画像を表示), さて、これまでの分析で「索引を使用していない非効率なSelect文があり、索引を作成することでこのSelect文のCPU時間が削減される」ことはわかりました。しかし、先ほどのAWR SQLレポートのCPU Time欄をみてもわかるとおり、個々のSelect文のCPU Timeは70ms前後とごくわずかな時間でしかありません。また、見つかった効率の悪いSQL文も、AWRレポートのSQL orderedセクションの十数個でしかありません。これでは、これらのSelect文を改善しても全体にあたえる影響が小さいため、そもそも索引を作成しても効果があまりないとも考えられます。しかし、AWRレポートのSQL orderedセクションは上位にランクされたSQL文の一覧であり、それ以下のSQL文は表示されていません。そこで、AWRレポートでは見つかっていないEMP1表をFull ScanしているSQLがほかにないかどうかを確認してみましょう。ここでAWRビューが役に立ちます(AWRビューの詳細はこちらをご覧ください)。, AWRレポートでは10程度のSelect文でしたが、同じタイプのSelect文が1076個も見つかりました。SQL文をみると、やはり検索条件のリテラル値が異なるため、Oracleからみるとすべて異なるSQL文ということになります。しかし、Plan Hash Valueがすべて同じ(2226897347)ということは、実行計画もすべて同じであり、Select文の処理内容としてはすべて同じだということがわかります。, 次に、これらのSelect文が全体のCPU Timeに対してどれぐらいの影響を与えているのかを確認しましょう。次のSQL文は同じPlan Hash ValueごとにSQLをグループ化し、それぞれのCPU Timeの合計値を求める例です。, Plan Hash Valueが2226897347は、先ほどのSelect文のものです。つまり、これらのSelect文は個々のCPU Timeは小さいけれど、それぞれを合計したCPU Timeは全体に対してもっとも大きな割合を占めていることが確認できました。しかも、今回のSelect文は索引を作成するだけで改善できるという、対策そのものも難しいものではありません。もちろん、索引を作成することによるほかのSQL文への影響を考慮する必要があるにしても、作成を検討する価値はあると判断してよいでしょう。, ちなみに2番目のSQLは、図3-3ですでに見つけている対策効果が低いと判断したSQLです(以下参照)。, 今回、AWRビューを使用することで、AWRレポートでは見つからなかったSelect文と、それらの全体に対する影響度を確認することができました。, 1回目の「4.4 Automatic Workload Repository(AWR)ビュー」で説明したとおり、AWRビューは、AWRレポートやADDMレポートとは違う観点で分析することができるため、このようにより詳しく確認したい場合に便利です。今回紹介した以外にもAWRビューにはたくさんの種類があるため、高度な技術者にとっては、ほかにも使用方法を探すという楽しみ(?)もあります。StatspackレポートやAWRレポートでは推測の域までしか分析できなかったものを、より確信に近づけてくれるのがAWRビューであると思っています。, それでは対策の効果を見ていきましょう。索引を作成し、まったく同じアプリケーションを実行しました。まずはOracle Enterprise Manager のトップ・アクティビティの結果を確認します(図3-8)。アプリケーションの実行時間は索引作成前の約8分に対して、索引作成後は約3分と改善されました。また、グラフのCPU Timeの面積がとても小さくなっていることがわかります。, 余談となりますが、図3-8のトップ・アクティビティのグラフの8:15前後を見ると、一時的にCPUが高くなっているのがわかります。これは、今回の性能改善の対策として実施した「索引作成」処理と「統計情報取り直し」処理です。StatspackやAWRのレポートでは、瞬間的な事象をとらえにくいと前に説明しましたが、トップ・アクティビティ画面ではこのような小さな事象までとらえることができます。もちろん、ASHレポートやV$ACTIVE_SESSION_HISTORYビューを確認すると、より詳細な内容を確認することが可能です。, CPU使用率は次のようになりました(図3-9)。やはりCPU使用率が100%になっている時間が短くなり、大きく改善していることがわかります。, 索引作成前と作成後のAWR期間比較レポートも確認してみましょう。作成したAWR期間比較レポートはこちらです。Top 5 Eventを確認すると、CPU timeが1/10以下になっていることがわかります(図3-10)。, 図3-10 AWR期間比較レポートTop 5 Timed Events(拡大画像を表示), また、問題となっていたEMP1表への大量のアクセスは、Logical、 Physical共に95%以上も改善していることがわかります(図3-11)。, 図3-11 AWR期間比較レポート Top 5 Segments Comparison (Logical/Physical Reads), 最後に、参考までに索引作成後のAWRレポートをご確認ください。今回、索引の作成だけでもかなり改善されましたが、さらにチューニングしたい場合はHard Parseをターゲットとすべきでしょう。Time Model Statisticsセクションを確認すると、Hard Parseで46.60%を占めていることがわかります(図3-12)。これまでの分析ですでに見つかっていますが、リテラルを使用した多数のSelect文に対し、バインド変数を使用するように修正するといった対策が考えられます。, select emp1no,ename from emp1 where emp1no = n, 25万件の表を2万回もFull Scanしているようでは性能問題を引き起こしても仕方ありません。索引を作成するだけで、セグメントへのアクセスが劇的に削減されたことも納得できます。大量のブロックから検索条件にマッチするレコードを探し出すために、CPU Timeを大きく費やしていたことになります。しかし、ここで次のような2つ疑問がのこります。, まず、1についてです。今回のSelect文はバインド変数を用いずに、リテラルで検索条件の値を指定していました。リテラルを使用するとその値が異なるだけで、それぞれのSelect文は違うSQLとして認識されます。結果として、まったく同じ実行計画のSQLであっても、個々のSelect文の負荷はとても小さいため、SQL Orderedセクションなどのランキングの上位に現れませんでした。このように、実行回数が多くて、ちりも積もれば山となるような処理に対してバインド変数を使用していないと、問題となるSQL文を見つけにくくなるという問題が生じることがあります。

阪急 株主優待乗車証 金券ショップ 販売, 阪急京都線 急行 廃止, ディスガイア 結晶 使い道, 七つの大罪 子供の名前 由来, 敬老の日 手紙 小学生, モスバーガー 菜摘 糖質, 第一ホテル 札幌 閉館, 気の 利 いた 贈り物 食べ物, 勤労感謝の日 保育園 プレゼント, 三宮 近鉄奈良 快速急行, 楽天ポイント Dポイント 両方, モスバーガー 菜摘 糖質, カナダ 祝日 2020, Suica 関西 オートチャージ, 松崎しげる 嫁 実家, グラクロ 最新 エリザベス, 父の日 80代 食べ物, 監察医朝顔 8話 動画, シャイン ガーネット 血統, 勤労感謝の日 保育園 プレゼント, 釣り 車中泊 軽, 楽天プレミアムカード ラウンジ 家族, グラクロ 最新 エリザベス, モスバーガー 菜摘 糖質, カナダ 祝日 2020,

Posted in

Leave a Comment





Featured Articles

Sorry, we couldn't find any posts. Please try a different search.