awr報告每天自動生成指令碼
原版參考了別人寫的指令碼,不過有一些錯漏的地方,無法直接執行的,就自己做了修改
後面又根據自己業務需求,設定了下awr生成時間
#!/bin/bash
#載入一下oracle的環境變數檔案,不然 sqlplus 命令在crontab 計劃任務裡不能被執行(或者用 source /home/oracle/.bash_profile)
. /home/oracle/.bash_profile
#定義變數----生成awr報告的檔案型別
AWR_FORMAT=html
#定義變數---- 拉取幾天內的snap列表
NUM_DAYS=3
#定義變數----生成的awr報告的結束snap ID ,即:end_snap
MAX_SNAP_ID=$(echo `sqlplus -S / as sysdba <<EOF
set heading off trimspool on feedback off pagesize 0
SELECT trim(max(SNAP_ID))-3 FROM DBA_HIST_SNAPSHOT;
EOF`)
#定義變數----生成的awr報告的開始snap ID ,即:begin_snap
MIN_SNAP_ID=`expr $MAX_SNAP_ID - 24`
#生成的awr報告的檔案路徑及檔名
AWR_LOG=/home/oracle/AWR_shahand_`date '+%Y%m%d_%H%M'`.html
#生成awr報告
echo -e "$AWR_FORMAT\n$NUM_DAYS\n$MIN_SNAP_ID\n$MAX_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql)
改良版
oracle使用者下
crontab -e
00 8 * * * /home/oracle/auto_awr.sh
mkdir /home/oracle/awr_log/
vi /home/oracle/auto_awr.sh
#!/bin/bash
#每天早上8點執行,取昨天0點到今天0點的awr報告
#載入一下oracle的環境變數檔案,不然 sqlplus 命令在crontab 計劃任務裡不能被執行(或者用 source /home/oracle/.bash_profile)
. /home/oracle/.bash_profile
export ORACLE_SID=這裡填寫資料庫的sid
#定義變數----生成檔案的時間設定為前一天
shijian=$(date --date='1 days ago' +%Y%m%d)
#定義變數----生成awr報告的檔案型別
AWR_FORMAT=html
#定義變數---- 拉取幾天內的snap列表
NUM_DAYS=3
#定義變數----生成的awr報告的結束snap ID ,即:end_snap
MAX_SNAP_ID=$(echo `sqlplus -S / as sysdba <<EOF
set heading off trimspool on feedback off pagesize 0
SELECT trim(max(SNAP_ID))-8 FROM DBA_HIST_SNAPSHOT;
EOF`)
#定義變數----生成的awr報告的開始snap ID ,即:begin_snap
MIN_SNAP_ID=`expr $MAX_SNAP_ID - 24`
#生成的awr報告的檔案路徑及檔名
AWR_LOG=/home/oracle/awr_log/AWR_shahand_ ${shijian}_00_24_${ORACLE_SID}.html
#生成awr報告
echo -e "$AWR_FORMAT\n$NUM_DAYS\n$MIN_SNAP_ID\n$MAX_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql)
#每天早上8點執行,取昨天9點到昨天17點的awr報告
#最大值減去15就是昨天的17點
MAX_SNAP_ID=$(echo `sqlplus -S / as sysdba <<EOF
set heading off trimspool on feedback off pagesize 0
SELECT trim(max(SNAP_ID))-15 FROM DBA_HIST_SNAPSHOT;
EOF`)
#最小值=最大值減去8就是9點了,這裡expr裡面的計算兩個值之間與減號一定要有空格,否則報錯
MIN_SNAP_ID=`expr $MAX_SNAP_ID - 8`
#設定awr報告生成路徑及檔名
AWR_LOG=/home/oracle/awr_log/AWR_shahand_${shijian}_09_17_${ORACLE_SID}.html
#生成awr報告的命令
echo -e "$AWR_FORMAT\n$NUM_DAYS\n$MIN_SNAP_ID\n$MAX_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28371090/viewspace-2654421/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AWR報告自動生成指令碼指令碼
- 自動生成awr報告指令碼指令碼
- 【AWR】自動生成AWR報告指令碼以及用法指令碼
- shell指令碼實現自動生成awr報告指令碼
- 一個自動生成awr報告的shell指令碼指令碼
- Oracle10g 自動生成AWR報告的指令碼Oracle指令碼
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼
- 生成awr報告的指令碼指令碼
- Oracle10g自動生成AWR分析報告的指令碼Oracle指令碼
- 自動生成AWR HTML報告HTML
- 指令碼:定時生成awr報告指令碼
- 自動生成ASH報告指令碼指令碼
- 定時自動生成awr報告
- 轉貼:批量生成awr報告指令碼指令碼
- AWR Report 自動生成指令碼 [final]指令碼
- awr自動收集指令碼指令碼
- 自動生成AWR報告並以郵件附件傳送
- 【效能優化】sqlplus中使用指令碼生成awr報告優化SQL指令碼
- Oracle生成awr報告Oracle
- Oracle 生成awr報告Oracle
- 手工生成AWR分析報告
- 使用shell自動傳送Oracle AWR報告Oracle
- 自動生成Statspack的指令碼指令碼
- ORACLE 11G生成AWR報告Oracle
- 每天定時生成awr,每小時一個awr
- 儲存過程批量生成awr指令碼儲存過程指令碼
- SQL Server映象自動生成指令碼方法SQLServer指令碼
- 通過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 透過shell指令碼抓取awr報告中的問題sql指令碼SQL
- Oracle 11g RAC 如何生成AWR報告?Oracle
- Oracle 11g RAC生成 AWR 報告方法Oracle
- AWR不能自動生成快照解決方法?
- oracle報表自動FTP指令碼OracleFTP指令碼
- 使用shell生成orabbix自動化配置指令碼指令碼
- 一個自動生成oracle job的指令碼Oracle指令碼
- 本機生成遠端資料庫AWR報告資料庫
- 手工生成AWR執行期對比報告記錄
- 透過shell指令碼定位效能sql和生成報告指令碼SQL