Pick Upテクノロジー
Oracle Enterprise Managerをなぜ使うのか 第2回 EM内のデータを活用する
データベースエンジニアという立場から、業務のさまざまな場面でOracle Enterprise Manager(EM)を活用している渡部亮太氏。今回は、EMを使った情報収集とその後のデータ活用について、具体例を交えて説明していただいた。(編集部)
■必要な情報を的確に得られるEM
Oracle Enterprise Manager(EM)のGUIを活用すれば、必要な情報を状況に応じて、かつ対話的なアプローチで取得できるようになります。全てとはいいませんが、問題分析に必要な情報を収集しやすくなるのです。
たとえば、インスタンスレベルのマクロな観点から、状況を俯瞰し、セッション、SQLという単位で状況を確認することができます。さらに、着目したセッション、SQLの性能指標である待機イベントや統計情報の割合を確認することで、随時詳細化して情報を確認するドリルダウン的なアプローチでの非定型的でアドホックな状況監視が可能となります。
■情報収集のしくみ
具体例として、「トップアクティビティ」(「ホーム」→「パフォーマンス」タブ→「トップアクティビティ」リンク)画面を基に説明をしましょう。この画面は、過去1時間のアクティブなセッション数を、待機イベントクラス(待機状態の分類)毎に集計したグラフから構成されています。この画面を基点に、以下の流れで、より詳細に情報を分析することができます。
(1)過去1時間の中から、調査対象の時間帯を選択
調査対象の時間帯を選択する
(2) 分析したい負荷要因の分類(待機イベントクラス)を選択
ここでは、User I/Oを選択する
待機イベントクラス(User I/O)を選択する
(3) 選択した待機イベントクラスの待機のうち、どの待機(待機イベント)でどの程度待機が発生しているか、分析したい項目を選ぶ
今回選択した待機イベントクラス User I/Oは、
db file sequential read
db file scattered read
direct path read
などの待機イベントから構成されるが、この画面により、それぞれの待機の比率と、実際にどの待機イベントで待機が発生しているかを確認できる
分析したい項目を選択する
(4) 待機イベントを選択し、待機イベントの待機時間毎の待機発生回数を示すヒストグラムから、インスタンス起動時点からの待機時間の分布を確認する
待機イベント「db file scattered read」の場合、このヒストグラムから、マルチブロック読み込みに要したディスクアクセス時間と、時間ごとの発生状況が確認できる
インスタンス起動時点からの待機時間の分布を確認する
ディスクに障害が発生していたり、ディスクに極端な負荷がかかっていたりする場合を除くと、シングルブロック読み込みに要する時間はおおむね数ms程度で極端な変動はないと考えられる。このため、ヒストグラム上で極端な変動が確認できるときは、障害や高負荷状態の発生が懸念される
以上のような作業をSQLベースで行うことはなかなか大変です。特に、時系列分析、傾向分析はSQLが苦手な処理の1つです。また、全体的な状況をうまく表現できるSQLをコーディングすることは難しく、状況に応じて必要な情報が得られる、もしくは詳細な状況を表現するSQLをその都度コーディングすることも容易ではないでしょう。
■有効活用できるデータ
EMには、上記の「トップアクティビティ」以外にもいくつかのグラフ、図などが用意されています。これらのグラフや図は、運用管理や性能監視を行ううえで極めて有用であり、積極的に活用することが望まれます。筆者の場合、以下のグラフや図がとても役立ちました。
- 「トップアクティビティ」の時系列グラフ(「パフォーマンス」画面のリンクより)
- 実行計画表示(「トップアクティビティ」や「SQLの検索」画面経由で「SQLの詳細」→「プラン」)
- 「スループット」、「I/O」の時系列グラフ(「パフォーマンス」画面の下部)
- 「メモリアドバイザ」のアドバイザ画面
加えて、このようなリアルタイムな「問題の特定」だけにとどまらず、「問題を解決」するためのアクションをEM上でシームレスに実行できることも特筆すべき点でしょう。
たとえば、性能監視の結果、あるSQLのパフォーマンスに問題が発生した場合には、自動SQLチューニングを実行して即座にパフォーマンスの改善を図ることができます。詳細は次回以降に述べますが、これらの機能はEMと各種アドバイザ機能の統合によって実現されています。
(文:株式会社コーソル 渡部亮太)
■関連資料