ITPub博客

首页 > 数据库 > Oracle > 使用SHELL脚本批量生成AWR报告

使用SHELL脚本批量生成AWR报告

原创 Oracle 作者:lixiaxin200319 时间:2016-07-14 09:20:37 0 删除 编辑
一、查询需要生成的AWR报告的开始快照ID和结束快照ID,比如我们要查询7月12日9-18点的AWR快照ID

SELECT distinct trim(SNAP_ID)
 FROM DBA_HIST_SNAPSHOT
 where to_char(BEGIN_INTERVAL_TIME,'yyyy-mm-dd hh24')='2016-07-12 09'
;

TRIM(SNAP_ID)
--------------------------------------------------------------------------------
43097

SELECT distinct trim(SNAP_ID)
 FROM DBA_HIST_SNAPSHOT
 where to_char(BEGIN_INTERVAL_TIME,'yyyy-mm-dd hh24')='2016-07-12 18'
;

TRIM(SNAP_ID)
--------------------------------------------------------------------------------
43106


二、根据查询到的AWR快照ID开发SHELL脚本
# vi   awr3.sh
#set -x
V_DIR=/home/oracle/olm/20160713/awr
V_SNAP_ID=43097
###########Print AWR#############
while [ $V_SNAP_ID -lt 43106 ]
do
AWR_FORMAT=html
NUM_DAYS=1
MAX_SNAP_ID=`sqlplus -S / as sysdba << EOF
set heading off trimspool on feedback off
SELECT trim(max(SNAP_ID)) FROM DBA_HIST_SNAPSHOT where SNAP_ID=$V_SNAP_ID;
EOF`
MIN_SNAP_ID=`expr $MAX_SNAP_ID - 1`
AWR_LOG=$V_DIR/AWR_$ORACLE_SID_`date '+%Y%m%d_%H%M'`_$V_SNAP_ID.html
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) > /dev/null

V_SNAP_ID=`expr $V_SNAP_ID + 1`
done
#set +x


赋予脚本执行权限
chmod 755 awr3.sh


执行脚本就会在 /home/oracle/olm/20160713/awr 目录下按每小时一份生成9到18点的AWR报告。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21582653/viewspace-2121992/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-10

  • 博文量
    66
  • 访问量
    208508