使用shell定製awr指令碼
比如我想檢視某一天的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 <
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
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 } <
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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1306777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用shell定製addm指令碼指令碼
- 通過shell定製ash指令碼指令碼
- 透過shell定製ash指令碼指令碼
- 指令碼:定時生成awr報告指令碼
- shell指令碼實現自動生成awr報告指令碼
- 一個自動生成awr報告的shell指令碼指令碼
- shell常用指令碼&crontab設定指令碼
- PSQL基本使用(定製維護指令碼)SQL指令碼
- shell指令碼之變數定義規範及使用指令碼變數
- mysql定時備份shell指令碼MySql指令碼
- 用 WebSphere CloudBurst 實現定製: 使用指令碼包定製超級模式WebCloud指令碼模式
- 通過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 透過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼
- Shell指令碼介紹與使用指令碼
- hive streaming 使用shell指令碼Hive指令碼
- Shell指令碼中cd命令使用指令碼
- 使用shell來定製dbms_sqltuneSQL
- 使用批處理指令碼或SHELL配合SQL指令碼指令碼SQL
- shell指令碼指令碼
- 【Shell】使用Shell指令碼快速完成SQL指令碼中重複枯燥的任務指令碼SQL
- awr自動收集指令碼指令碼
- 輕鬆使用“Explain Shell”指令碼來理解 Shell 命令AI指令碼
- 如何使用zx編寫shell指令碼指令碼
- 使用shell 指令碼備份資料指令碼
- Centos下使用php呼叫shell指令碼CentOSPHP指令碼
- shell指令碼批量操作使用者指令碼
- shell oracle 建立使用者指令碼Oracle指令碼
- [Shell] Shell 生成 HTML指令碼HTML指令碼
- 【AWR】自動生成AWR報告指令碼以及用法指令碼
- shell指令碼(二)指令碼
- shell指令碼心得指令碼
- shell指令碼案例指令碼
- 常用shell指令碼指令碼
- 生成awr報告的指令碼指令碼
- 巧用shell指令碼生成快捷指令碼指令碼
- 使用shell指令碼生成只讀許可權的sql指令碼指令碼SQL
- shell指令碼(6)-shell陣列指令碼陣列