转自:http://blog.sina.com.cn/s/blog_68236b870100wns1.html
vim ~oracle/auto/awr.auto #编辑生成 awr 报告的脚本 文件,取前一天的24小时 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=`sqlplus -S / as sysdba << EOF
set heading off trimspool on feedback off
SELECT trim(max(SNAP_ID))-3 FROM DBA_HIST_SNAPSHOT; #我在crontab里设置每天凌晨3点10分执行,所以要取最大ID 后在减3
EOF`
#定义变量----生成的awr报告的开始snap ID ,即:begin_snap
MIN_SNAP_ID=`expr $MAX_SNAP_ID - 24`
#生成的awr报告的文件路径及文件名
AWR_LOG=/tmp/AWR_shahand_`date '+%Y%m%d_%H%M'`.html#生成awr报告
echo -e "$AWR_FORMAT\n$NUM_DAYS\n$MIN_SNAP_ID$MAX_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql) > /dev/null
:wq 保存退出
crontab -e
10 3 * * * /home/oracle/awr.auto
:wq