データベースの負荷を表示するために使用するシェルスクリプト

 

オリジナル  のOracle  著者:jeanron100  時間:2014年5月23日午前8時56分26秒  8912  2  

データベースの問題を表示するときに誰フィードバック問題あれば通常、それは問題を見つけるためのイニシアチブをとる、混乱感のようなものになります基本的には方向ではありません、AWR、灰に発生した時間帯は、からの質問やタイムスタンプの一部です関連情報を見つけるための歴史、個人的な仕上げのスクリプト以下、当日の負荷情報データベースの期間を表示することができ、それは忙しいデータベースを十分に把握することができます。

私は朝6:00午前12時00分負荷データベースに見たいような、簡単な例を見てください

Showdbtime.shスクリプトは、包括的なデータベースの負荷値設定された時間帯で表示されます。そのような7:00時間(60分)6:00として、DBTIME 120分の場合、表示負荷が200%です

BEGIN_TIME END_TIME ELAPSED_TIME DBTIME WORKLOAD_PER 
----------------------------------- ---------- ------------------------- ------------- ---------- - ------------------ 
201 ** 21-MAY-14 06.07.33.893 PM 201 ** 21-MAY-14 07.07.33.893 PM 60 120 200%

次のようにスクリプトを読み取ります。

SQLPLUS -s $ DB_CONN_STR @ $ SH_DB_SID <

セットLINESIZE 200 
COLのBEGIN_TIMEフォーマットA35 
コルEND_TIMEフォーマットA35 
コルのelapsed_timeフォーマット99999999.999 
COLのworkload_perフォーマットA20 
SELECT 
BEGIN_TIME、END_TIME、 
のelapsed_time、 
DBTIME、 
TRUNC(DBTIME /デコード(のelapsed_time、0,1、のelapsed_time)、2)* 100 ||」 % 'workload_per 
から 
( 
選択 
B.SNAP_IDを||' ** '|| B.END_INTERVAL_TIMEのBEGIN_TIME、 
E.SNAP_ID ||' **「|| E.END_INTERVAL_TIME END_TIME、 
E.END_INTERVAL_TIME FROM EXTRACT(DAY - B.END_INTERVAL_TIME) * 1440 + 
EXTRACT(E.END_INTERVAL_TIME FROM HOUR - B.END_INTERVAL_TIME)* 60 + 
EXTRACT(E.END_INTERVAL_TIME -B.END_INTERVAL_TIMEからわずか)+ 
EXTRACT(E.END_INTERVAL_TIME -B.END_INTERVAL_TIMEから二番目)/ 60のelapsed_time、 
db_time.dbtime 
DBA_HIST_SNAPSHOT B、DBA_HIST_SNAPSHOT E FROM、 
                        ( 
                        b.snap_id begin_snap、e.snap_id end_snap選択 
                        ラウンド((和(e.value) - 
                        (和b.value))/ 1000000 / 60,2)DBTIME 
                        DBA_HIST_SYS_TIME_MODEL Eから、DBA_HIST_SYS_TIME_MODELのB、 
                                        ( 
                                        begin_interval_time> SYSDATE -1 DBA_HIST_SNAPSHOTから選択分(snap_id)begin_snap、MAX(snap_id)end_snap 
                                        そしてEXTRACT $ 1、$ 2との間(END_INTERVAL_TIME FROM時間) 
                                        )temp_snap 
                        WHERE 
                         e.STAT_NAME = 'DB時間' 
                         とb.snap_id = temp_snap.begin_snap 
                        とe.snap_id = temp_snap.end_snap 
                        AND b.STAT_NAME = 'DB時間' 
                        グループEによって.snap_id、b.snap_id 
                        )db_time 
WHERE b.begin_interval_time> SYSDATE -1 
と$ 1、$ 2との間のEXTRACT e.END_INTERVAL_TIME FROM(時間) 
とb.snap_id = db_time.begin_snap 
とe.snap_id = db_time.end_snap 
) 
/

EOFの 
終了

 

あなたはデータベースごとに時間の負荷を表示したい場合はこれに基づき、あなたはいくつかの改善をスキップすることができます。

スクリプトshowdbtimerpt.sh

SQLPLUS -s $ DB_CONN_STR @ $ SH_DB_SID <プロンプト~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ 
オフセットヘッド 
セットpages0の 
オフセットフィードバック 
にセットserveroutputを 
スプールはshowdbtimerpt_tmp.sh 
始める 
.. $ 1に私のための$ 2ループ 
(DBMS_OUTPUT.PUT_LINEを'kshのshowdbtime '|| I ||'' || (I + 1))。 
ループを終了します。 
終わり; 

オフスプール。

EOF 
明確な 
エコー~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ 
エコーBEGIN_TIME ------------------------- END_TIME -------------------- ------- ELAPSED_TIME- BTIME ----- WORKLOAD_PER -------- 
エコー------------------------- ---------- ----------------------------------- ----- -------- ---------- -------------------- 
kshのshowdbtimerpt_tmp.sh 
RM showdbtimerpt_tmp.sh 
終了

 

業績は、次のようになります。

BEGIN_TIME END_TIME ELAPSED_TIME DBTIME WORKLOAD_PER 
----------------------------------- ---------- ------------------------- ------------- ---------- - ------------------ 
201 ** 21-MAY-14 06.07.33.893 PM 201 ** 21-MAY-14 07.07.33.893 PM 60 120 200%

201 ** 21-MAY-14 07.07.33.893 PM 201 ** 21-MAY-14 08.07.33.893 PM 60 150 250%

201 ** 21-MAY-14 08.07.33.893 PM 201 ** 21-MAY-14 09.07.33.893 PM 60 240 400%

201 ** 21-MAY-14 09.07.33.893 PM 201 ** 21-MAY-14 10.07.33.893 PM 60 60 100%

201 ** 21-MAY-14 10.07.33.893 PM 201 ** 21-MAY-14 11.07.33.893 PM 60 120 200%

レポートはそう一目でいることを、負荷各時間帯を生成することができます。負荷は、関連するプロパティをクロール対象とすることができます。

おすすめ

転載: www.cnblogs.com/yaoyangding/p/12052377.html