獲取AWR的指令碼,可以在crontab裡面部署
使用方法可以在指令碼最後檢視,或者使用-h引數獲取幫助。
版本更新:
1 修改不能在rac環境執行的問題。
修改後獲取本節點的awr,不能指定獲取其他節點的awr
因為shell指令碼不能直接上傳,我使用雲盤分享指令碼。
指令碼獲取路徑:
連結:
提取碼:z5bb
#!/bin/bash #by raysuen #v02 . ~/.bash_profile AWR_FORMAT=html NUM_DAYS=2 ############################################ #獲取指定時間的snapid的函式 ############################################ getsnapID(){ BEGIN_SNAP_ID=`sqlplus -S / as sysdba <<-RAY set heading off trimspool on feedback off SELECT trim(SNAP_ID) FROM DBA_HIST_SNAPSHOT a,v\\$instance b where to_char(END_INTERVAL_TIME,'yyyymmddhh24')='$1' and a.instance_number=b.instance_number; RAY` END_SNAP_ID=`sqlplus -S / as sysdba <<-RAY set heading off trimspool on feedback off SELECT trim(SNAP_ID) FROM DBA_HIST_SNAPSHOT a,v\\$instance b where to_char(END_INTERVAL_TIME,'yyyymmddhh24')='$2' and a.instance_number=b.instance_number; RAY` #判斷獲取的snapid是否為空 if [ -z ${BEGIN_SNAP_ID} ];then echo "The script can not get a valid snap id,please enter a right time for -b." exit 96 fi if [ -z ${BEGIN_SNAP_ID} ];then echo "The script can not get a valid snap id,please enter a right time for -e." exit 96 fi BEGIN_SNAP_ID=`echo ${BEGIN_SNAP_ID} | sed 's/ //g'` END_SNAP_ID=`echo ${END_SNAP_ID} | sed 's/ //g'` } ############################################ #獲取幫助的函式 ############################################ my_fun(){ echo "SYNOPSIS:" echo " ./GET_AWR.sh -b begin_time -e end_time -n awr_name" echo "OPTIONS:" echo " -b specify a time for begin time of awr,format yyyymmddhh24" echo " -e specify a time for begin time of awr,format yyyymmddhh24" echo " -n specify a name for name of awr" echo "EXAMPLE:" echo " ./GET_AWR.SH -b 2019051708 -e 2019051709 -n test" echo " ./GET_AWR.sh -b \`date +'%Y%m%d18' -d '+1 day ago'\` -e \`date +'%Y%m%d19' -d '+1 day ago'\` -n test" } ############################################ #指令碼入口,獲取引數 ############################################ if [ $# -lt 1 ];then echo "You must specify parameters:" echo " -b begin time of awr" echo " -e end time of awr" exit 99 fi while (($#>=1)) do if [ "$1" == "-b" ];then shift awrbegintime=$1 shift continue fi if [ "$1" == "-e" ];then shift awrendtime=$1 shift continue fi if [ "$1" == "-n" ];then shift awrname=$1 shift continue fi if [ "$1" == "-h" ];then my_fun exit 0 fi shift done ############################################ #健壯性檢查 ############################################ #引數不可以為空 if [ -z ${awrbegintime} ];then echo "You must specify parameters:-b for begin time of awr" exit 98 fi if [ -z ${awrendtime} ];then echo "You must specify parameters:-e for end time of awr" exit 98 fi if [ -z ${awrname} ];then echo "You must specify parameters:-n for report name of awr" exit 98 fi #判斷引數為時間 date -d "${awrbegintime:0:8} ${awrbegintime:8:2}" > /dev/null 2>&1 if [ $? -ne 0 ];then echo "The valus of -b is invalid date." exit 97 fi date -d "${awrendtime:0:8} ${awrendtime:8:2}" > /dev/null 2>&1 if [ $? -ne 0 ];then echo "The valus of -e is invalid date." exit 97 fi ############################################ #執行函式,獲取snap id ############################################ getsnapID ${awrbegintime} ${awrendtime} ############################################ #定義awr報告的路徑 ############################################ AWR_LOG=/u02/logout/awr/AWR_${awrname}_${awrbegintime}_${awrendtime}.html ############################################ #獲取awr報告 ############################################ echo -e "$AWR_FORMAT\n$NUM_DAYS\n$BEGIN_SNAP_ID\n$END_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql) > /dev/null ############################################ #幫助: # 引數區分大小寫 # -b awr的開始時間,格式:yyyymmddhh24 # -e awr的結束時間,格式:yyyymmddhh24 # -n awr報告中的名字 #例子: # ./GET_AWR.SH -b "2019051708" -e "2019051709" -n test # ./GET_AWR.sh -b `date +'%Y%m%d18' -d '+1 day ago'` -e `date +'%Y%m%d19' -d '+1 day ago'` -n test ############################################
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28572479/viewspace-2644807/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 新增 cron 指令碼 (在伺服器的 cron 裡面,添上你執行指令碼的命令,現在裡面有個,你可以參考下)指令碼伺服器
- 【AWR】Oracle批量生成awr報告指令碼Oracle指令碼
- shell指令碼放到crontab裡就執行不成功的問題指令碼
- 在linux上定期執行命令、指令碼(cron,crontab,anacron)Linux指令碼
- 伺服器部署python指令碼並使用crontab定時執行伺服器Python指令碼
- 怎麼在ajax外邊使用ajax裡面在後端獲取的資料後端
- jenkins pipline指令碼 獲取git分支Jenkins指令碼Git
- [20230203]完善awr.sql指令碼.txtSQL指令碼
- 6.DJango在views裡面對獲取資料進行操作DjangoView
- 常用指令碼:獲取隱含引數指令碼
- awr報告每天自動生成指令碼指令碼
- 【Redis】獲取沒有設定ttl的key指令碼Redis指令碼
- shell指令碼獲取函式返回值指令碼函式
- shell指令碼獲取時間格式化指令碼
- 獲取sql完整指令碼,get_fulltext.shSQL指令碼
- [20231115]如何快速獲取AWR中涉及到的表.txt
- .net 程式通過 crontab 無法啟動,手動執行指令碼可以啟動指令碼
- [20221208]完善bind_cap_awr.sql指令碼.txtSQL指令碼
- linux crontab下的指令碼不執行怎麼辦Linux指令碼
- Java Web後臺從request裡面獲取的資料是亂碼問題JavaWeb
- 獲取一個陣列裡面第K大的元素陣列
- 獲取spring裡的beanSpringBean
- Linux c程式中獲取shell指令碼輸出(如獲取system命令輸出)LinuxC程式指令碼
- python獲取頁面亂碼時的處理Python
- JavaScript 獲取div在頁面中座標JavaScript
- Linux Shell獲取正在執行指令碼的絕對路徑Linux指令碼
- Python指令碼的常見引數獲取和處理方式Python指令碼
- vbs指令碼獲取Am註冊路徑資訊指令碼
- getBoundingClientRect方法獲取元素在頁面中的相對位置GCclient
- 在js中獲取 input checkbox裡選中的多個值JS
- 一鍵部署指令碼指令碼
- Bash 指令碼例項:獲取符號連結的目標位置指令碼符號
- Spring在程式碼中獲取bean的幾種方式SpringBean
- dotnet 在 UNO 裡獲取 X11 視窗指標的方法指標
- 練習時的docker部署指令碼Docker指令碼
- 獲取所有域使用者的登陸歷史資訊指令碼指令碼
- 採用lua指令碼獲取mysql、redis資料以及jwt的校驗指令碼MySqlRedisJWT
- shell指令碼中main函式中$#獲取不到指令碼傳入引數個數淺析指令碼AI函式