原版参考了别人写的脚本,不过有一些错漏的地方,无法直接执行的,就自己做了修改
后面又根据自己业务需求,设置了下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
#定义变量----生成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_`date '+%Y%m%d_%H%M'`_00_24.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_2=$(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_`date '+%Y%m%d_%H%M'`_09_17.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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28371090/viewspace-2654421/