使用shell定製awr指令碼

來源:互聯網
上載者:User

使用shell定製awr指令碼

大家在做效能問題診斷的時候,awr是不可或缺的工具,使用?/rdbms/admin/awrrpt.sql可能大家使用的多了,可能有時候感覺輸入參數還是有些太繁瑣了。一邊複製,一邊得到一個快照列表查看,其實還是不太方便。
 比如我想查看某一天的8點到9點的快照,產生一個awr報告,那麼可能得算一下大概需要多少天的快照,然後從一個冗長的快照列表中去一個一個複製,還是有些繁瑣的。自己在產生awr的過程中總是感覺有些不太方便,今天下決心自己定製了一把。
 首先解決快照列表的問題。一般我們需要得到如下的一個列表。
Instance    DB Name        Snap Id    Snap Started    Level
 ------------ ------------ --------- ------------------ -----
 TEST01      TEST01            1274 19 Oct 2014 22:00      1
                                1275 19 Oct 2014 23:00      1
                                1276 20 Oct 2014 00:00      1
                                1277 20 Oct 2014 01:00      1
                                1278 20 Oct 2014 02:00      1


我使用了如下的指令碼做了定製,比如我需要兩天以前的,那天是10月19號,需要得到3點到9點的快照,那麼我就直接可以使用指令碼得到一個快照的簡單列表。
 輸出的結果如下。前後各寬裕一個小時。這樣我就簡單就可以選擇哪些快照是我需要的。隨時查看。

Current Instance
 ~~~~~~~~~~~~~~~~

      DBID DB_NAME    INST_NUM INST_NAME
 ---------- --------- ---------- ----------------
 3645037571 TEST01            1 TEST01


 DB_NAME      SNAP_ID SNAPDAT                          LVL
 --------- ---------- -------------------------- ----------
 TEST01          1262 19 Oct 2014 02:00                  1
                1263 19 Oct 2014 03:00                  1
                1264 19 Oct 2014 04:00                  1
                1265 19 Oct 2014 05:00                  1
                1266 19 Oct 2014 06:00                  1
                1267 19 Oct 2014 07:00                  1
                1268 19 Oct 2014 08:00                  1
                1269 19 Oct 2014 09:00                  1

8 rows selected.

指令碼內容如下:

sqlplus -s $DB_CONN_STR@$SH_DB_SID <<EOF
 break on db_name
 set pages 50
 set linesize 100
 prompt
 prompt Current Instance
 prompt ~~~~~~~~~~~~~~~~
 select d.dbid            dbid
      , d.name            db_name
      , i.instance_number inst_num
      , i.instance_name  inst_name
  from v\$database d,
        v\$instance i;
       
 select
      di.db_name                                        db_name
      , s.snap_id                                        snap_id
      , to_char(s.end_interval_time,'dd Mon YYYY HH24:mi') snapdat
      , s.snap_level                                      lvl
  from dba_hist_snapshot s
      , dba_hist_database_instance di
  where
  ( di.dbid,di.instance_number) in
  (select d.dbid            dbid
      , i.instance_number inst_num
  from v\$database d,
        v\$instance i)
    and di.dbid            = s.dbid
    and di.instance_number  = s.instance_number
    and di.startup_time    = s.startup_time
    and to_char(END_INTERVAL_TIME,'yyyymmdd')='$1'
    and EXTRACT(HOUR FROM END_INTERVAL_TIME) between $2-1 and $3+1
  order by db_name, instance_name, snap_id; 
 EOF

 

得到了快照列表,得到awr報告就容易得多了。
 可以使用如下的指令碼來得到awr text格式的報告,輸入參數只需要兩個快照號。如果要得到html的報告,linesize最好設定為1500,要不會有格式的問題。
set linesize 80

print "
        WHENEVER SQLERROR EXIT 5
        SET FEEDBACK OFF
        SET HEAD OFF
        SET PAGES 0
        connect ${DB_CONN_STR}@${SH_DB_SID}\n
        select d.dbid||','||i.instance_number||','||$1||','||$2||',0' text
                        from v\$database d,
              v\$instance i ;
        " | sqlplus -s /nolog > awr_inputs.lst

sqlplus -s ${DB_CONN_STR}@${SH_DB_SID} <<EOF
 spool awrrpt_$1_$2.lst
 select output from table(dbms_workload_repository.awr_report_text( `cat awr_inputs.lst`));
 spool off;

EOF


比如我希望得到4點到8點的awr報告,就可以直接輸入兩個快照號即可。
 ksh genawrtext.sh 1264 1268
 >ls -lrt
 -rw-r--r-- 1 ora11g dba 258496 Oct 21 08:24 awrrpt_1264_1268.lst

Oracle AWR報告產生與查看

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

Oracle AWR報告產生步驟

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.