概述
通过awr特性我们可以随时从数据库提取awr报告。通过报告可以了解一个系统的整个运行情况,生成的报告包括多个部分。下面用shell脚本来收集每天开始时间6点,结束时间20点的awr报告并存储在/home/oracle/awr/report/目录下
基础环境
目录:mkdir -p /home/oracle/awr/report
脚本:/home/oracle/awr/awr.sh
执行用户:oracle
生成awr的脚本内容
vi /home/oracle/awr/awr.sh
#!/bin/bash# ********************************# * awr.sh# ********************************export ORACLE_SID=nwppdbexport ORACLE_BASE=/home/oracle/app/oracleexport ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1#the big snap_idm=(`sqlplus -S "/ as sysdba" << EOFset pagesize 0 feedback off verify off heading off echo offselect max(snap_id) from dba_hist_snapshot where begin_interval_time>to_date(to_char(sysdate,'YYYY-MM-DD')||' 06','YYYY-MM-DD HH24') and end_interval_time<=to_date(to_char(sysdate,'YYYY-MM-DD')||' 20','YYYY-MM-DD HH24');EOF`)#the small snap_idn=(`sqlplus -S "/ as sysdba" << EOFset pagesize 0 feedback off verify off heading off echo offselect min(snap_id) from dba_hist_snapshot where begin_interval_time>to_date(to_char(sysdate,'YYYY-MM-DD')||' 06','YYYY-MM-DD HH24') and end_interval_time<=to_date(to_char(sysdate,'YYYY-MM-DD')||' 20','YYYY-MM-DD HH24');EOF`)name=(`sqlplus -S "/ as sysdba" << EOFset pagesize 0 feedback off verify off heading off echo offselect instance_name from v$instance;EOF`)date=(`sqlplus -S "/ as sysdba" << EOFset pagesize 0 feedback off verify off heading off echo offselect to_char(sysdate,'yyyymmddhh24') from dual;EOF`)sqlplus -S "/ as sysdba" <
这里大家注意根据需要修改ORACLE_SID、ORACLE_BASE、ORACLE_HOME参数
![9ebd79bac79d0c25534d9d786200f616.png](https://img-blog.csdnimg.cn/img_convert/9ebd79bac79d0c25534d9d786200f616.png)
执行脚本
chmod u+x awr.sh
./awr.sh
执行过程如下:
![396e349141986768b6a2b92c90ed79d3.png](https://img-blog.csdnimg.cn/img_convert/396e349141986768b6a2b92c90ed79d3.png)
![fb901b00874ca0a64e87c471edf6f04a.png](https://img-blog.csdnimg.cn/img_convert/fb901b00874ca0a64e87c471edf6f04a.png)
![3bc65b1355ba19aad43baf87943814bb.png](https://img-blog.csdnimg.cn/img_convert/3bc65b1355ba19aad43baf87943814bb.png)
拷贝html到本地后查看awr报告:
![c0a2698063f9f1f0b718b22812472bd2.png](https://img-blog.csdnimg.cn/img_convert/c0a2698063f9f1f0b718b22812472bd2.png)
设置定时任务
crontab -e 设置每天晚上23:30自动执行脚本收集awr报告
30 23 * * * sh /home/oracle/awr/awr.sh
关于用shell脚本自动生成awr报告的内容就介绍到这了,大家也可以自己根据需要对脚本做调整。后面会分享更多关于devops和DBA方面内容,感兴趣的朋友可以关注下!!
![9044509e5ed99b148fd8ba38d3627dba.gif](https://img-blog.csdnimg.cn/img_convert/9044509e5ed99b148fd8ba38d3627dba.gif)