9月 1st, 2008

Oracleリソー゜ /SQL監?

Posted in Oracle by admin

  運用時や負荷? 証時ぜ DBサーバ関連で起きる問題として、例えば、DBサーバぜ CPU利用? が異常に? い、バッチ処理時間やCGIのレスポンス時間が長い・・・? 々が起こりえます。問題を解決する為の情報として、以? のように順を追ってボトルネックを検出します。

【問題発生】DBサーバCPU負荷、DBサーバディスク? 荷、バッチ処理時間の遅延、CGIレスポンスの劣化
      ↓
【問題解析】OSリソース監? (sar, vmstat, iostat ...)、アプリケーション解析(callgrind, collect ...)
      ↓
【? 因解析】Oracleリソース監? 、SQL監?
      ↓
【解決策検? 】 OS/Oracleパラメータチューニング、SQLチューニング、バッチ計画? 直し、リソース? ?

  問題を解決する為の情報として、OSリソースの圏 得と監? は? 常時から実施しておぜ べきです。DBサーバぜ CPU利用? やディスク? 荷が見圏 けられる時の次の調査段障 として、Oracleリソースを圏 照することになると思います。また、バッチ処理時間やCGIのレスポンス時間の遅延に対しては、アプリケーションの解析後、SQL処理時間に問題があると判断された後に問題のあるSQLを探し出す事になります。定常時からOracleリソースやSQL監? までが出来ていれば良いのでですが、そうでない場合は、以? のようなツールの地 入、監? を検? します。

(1) statspack
(2) 動的パフォーマンスビュボ
(3) EnterpriseManager/AWR、IndepthForOracle
——————————————-

(1) statspack
  ある時間からある時間の時間帯ぜ Oracleリソース統計情報をテキストベースでレポート出力します。ボトルネックをピンポイントで? 出するというよりは、全? のリソース傾向を掴むのに適しています。テキストベースなので直観性はありませんが、慣れればここから素早ぜ 、多ぜ の情報を得ることも可能だと思います。Oracle標準のパフォーマンスレポートツールのため、EnterpriseEditionでもStandardEditionでも利用することができ、追加のライセンスやオプションも必要としません。statspackぜ Oracle 8.1.6以降、AWRぜ 10.1.0以降のバージョンに対応しています。

§ Oracleリソース監?
  情報釜 ぜ SNAP SHOTレベルで調整できますが、レベボ 7以? でかなり細かいレベルまでリソース情報を表示してぜ れます。ただし、この情報圏 得レベルを大きぜ しすぜ るとパフォーマンスに影響するかもしれませんので、リソースに? 裕がないDBサーバではレベボ 5以? が目? になります。特に目? となる注目情報は? 機イベントTOP5とキャッシュヒット? でしょうか。下記に地 しだけポイントを抜粋しています。


Top 5 Timed Events                                         Avg %Total
~~~~~~~~~~~~~~~~~~                                        wait   Call
Event                                 Waits    Time (s)   (ms)   Time Wait Class
------------------------------ ------------ ----------- ------ ------ ----------
db file scattered read               63,079         967     15   27.5   User I/O
CPU time                                            907          25.8
db file parallel read                43,785         819     19   23.3   User I/O
db file sequential read             125,279         712      6   20.2   User I/O
gc cr multi block request           430,241         144      0    4.1    Cluster
          -------------------------------------------------------------

“ “CPU time”が100%になる事が最も望ましい待機イベントTOP5の? 果です。イベント”CPU time”は唯? 待機している時間ではなく稼働しているイベントです。その? の? 機イベントをなぜ し、”CPU time”の眷 時間を減らすことがチューニングの目木 になります。Wait Class “User I/O”の? 機イベント(db file sequential read、db file scattered read)が多い場合、SQLチューニングの? 要性が高い場合が多いです。


Instance Efficiency Percentages (Target 100%)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            Buffer Nowait %:   99.99       Redo NoWait %:    100.00
            Buffer  Hit   %:   95.35    In-memory Sort %:    100.00
            Library Hit   %:   99.84        Soft Parse %:     99.64
         Execute to Parse %:   26.59         Latch Hit %:     99.97
Parse CPU to Parse Elapsd %:   86.74     % Non-Parse CPU:     98.53

※各キャッシュヒット? ぜ 100%に蜿 づけることを目木 にします。予算の? 裕があれば、物理メモリを増設しぜ Oracleぜ SGAサイズ? メモリ関連パラメータを増加・・・と、そうもいかないのがチューニングをする理由でしょうか。

§ SQL監?
  SQL実行時間順、CPU使用時間順、バッファーメモリからのデータ圏 得釜 が多い順、物理ディスクからのデータ圏 得釜 が多い順などにソートして? 荷の? いSQLをリストしてぜ れます。ただし、負荷の? いSQL一覧ぜ SQL文が先頭の? バイトかで省略されているので、改めぜ SQL実行させたい時にコピー? ペーストできないところが難点ではあります。また、SQL実行計画も出力されません。

(2) 動的パフォーマンスビュボ
  statspack/AWRがスナップショット間の時間帯の統計情報なのに対し、動的パフォーマンスビューで圏 得する情報は圏 得タイミングのリソースを得ることが可能です。時間軸を用いたリソースの推移を見ることが出来ます。

§ Oracleリソース監?
  statspack/AWRぜ “Load Profile”情報などは統計情報よりも時間推移で表示した方が傾向が掴みやすい場合も多々あります。スクリプトぜ V$SYSSTAT、V$SESSION、V$SESSION_WAITを監? しておけば、各Oracleリソースの時間推移を得ることが出来ます。スクリプトで監? する場合、圏 得? ぜ DB接続処理を行うのは? 計な? 荷がかかりますので、以? に示したスクリプトのように接続状態を保ったままにしておぜ のがおすすめです。

$ cat oracle_sysstat.sh
#!/bin/sh

#check
if [ $# -lt 5 ]; then
        exit 1
fi

pid=$$
echo ${pid} > logs/v_sysstat.pid
echo "${3}/${4}@${5}"
echo "set pages 0 lin 1024 echo off trimspool on feedback off ver off colsep '      '"
echo "spo logs/v_sysstat_`date +%Y%m%d%H%M%S`.log"

count=0
while [ $count -lt ${2} ]
do
        echo "SELECT TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI:SS') TIME FROM DUAL ;"
        echo "SELECT NAME,CLASS,VALUE FROM V$SYSSTAT ;"
        sleep ${1}
        count=`expr $count + 1`
done
echo "spo off"

rm -fr logs/v_sysstat.pid
exit 0

$ /bin/sh oracle_sysstat.sh 10 480 schema pass instance | sqlplus > /dev/null &

dpv_resource
? V$SYSSTAT情報をEXCELでグラフ化

§ SQL監?
  V$SQL_PLAN、V$SQLTEXTを監? すれば可能ですが、キャッシュに? 持されているSQLのみが対象になります。また、テーブルデータも大きく定常時から監? することでサーバへのオーバーヘッド発生の可能性もあります。

(3) EnterpriseManager/AWR、IndepthForOracle
  圏 得できる情報釜 ぜ (1)statspack(2)動的パフォーマンスビューを合゜ せた釜 ですが、ブラウザベースでグラフィカルなので直観性があります。しかし、Oracle Databaseではない別製品なので、当然? がかかります。(1)(2)にない機能として、診断? 能、アドバイザ? 能があります。

§ Oracleリソース監?
以? のようなインターフェースです。統? 、時間推移でもグラフィカルな形? で圏 照可能です。
Em_Resource2
? EnterpriseManager

Indepth_resource
? Indepth

§ SQL監?
以? のようなインターフェースです。SQL単位の使用リソース、平均実行時間、実行回数、実行計画などが圏 照できます。SQLチューニングアドバイザ? 能を利用することも出来ます。
Em_sql
? EnterpriseManager

Indepth_sql
? Indepth

Comments are currently closed, but you can trackback from your own site. RSS 2.0

Comments are closed!