脚本主要由以下几个部分组成:

awr.sql 用来在sqlplus 中执行的脚本,该脚本从网上直接找的。

awr.sh 用来调用sqlplus来生成awr报告。

ftp.sh 用来打包压缩每天生成的awr报告(压缩率大于50倍),并进行ftp传输,清理过期的报告,对于linux和solaris略有不同。

crontab 用来执行定时任务,根据需求进行调整。

下面为具体的脚本内容,可以根据需要进行调整。

awr.sql :

 1 set echo off;
2 set veri off;
3 set feedback off;
4 set termout on;
5 set heading off;
6
7 variable rpt_options number;
8
9 define NO_OPTIONS = 0;
10 -- define ENABLE_ADDM = 8;
11
12 rem according to your needs, the value can be 'text' or 'html'
13 define report_type='html';
14 begin
15 :rpt_options := &NO_OPTIONS;
16 end;
17 /
18
19 variable dbid number;
20 variable inst_num number;
21 variable bid number;
22 variable eid number;
23 begin
24 select max(snap_id)-1 into :bid from dba_hist_snapshot;
25 select max(snap_id) into :eid from dba_hist_snapshot;
26 select dbid into :dbid from v$database;
27 select instance_number into :inst_num from v$instance;
28 end;
29 /
30
31 column ext new_value ext noprint
32 column fn_name new_value fn_name noprint;
33 column lnsz new_value lnsz noprint;
34
35 select 'txt' ext from dual where lower('&report_type') = 'text';
36 select 'html' ext from dual where lower('&report_type') = 'html';
37 select 'awr_report_text' fn_name from dual where lower('&report_type') = 'text';
38 select 'awr_report_html' fn_name from dual where lower('&report_type') = 'html';
39 select '80' lnsz from dual where lower('&report_type') = 'text';
40 select '1500' lnsz from dual where lower('&report_type') = 'html';
41
42 set linesize &lnsz;
43
44 column report_name new_value report_name noprint;
45
46 select 'sp_'||:bid||'_'||:eid||'.'||'&ext' report_name from dual;
47 set termout off;
48 spool &report_name;
49
50 select output from table(dbms_workload_repository.&fn_name(:dbid, :inst_num,:bid, :eid,:rpt_options ));
51 spool off;
52 set termout on;
53 clear columns sql;
54 ttitle off;
55 btitle off;
56 repfooter off;
57 undefine report_name
58 undefine report_type
59 undefine fn_name
60 undefine lnsz
61 undefine NO_OPTIONS

awr.sh:

 1 mydate='date +%y%m%d'
2 ORACLE_SID=orcl; export ORACLE_SID
3 ORACLE_BASE=/opt/app/ora11g; export ORACLE_BASE
4 ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
5 cd /opt/awr
6 $ORACLE_HOME/bin/sqlplus /nolog<<!
7 connect / as sysdba;
8 @awr.sql
9 exit
10 ! 

ftp.sh(RHEL6版本):

 1 #!/usr/bin/bash
2 mydate=`date +%y%m%d`
3 mydir=/opt/awr
4 cd ${mydir}
5 find *.html -daystart -mtime -1 | xargs tar -zcvf awr_${mydate}.tar.gz
6 echo "======================FTP start========================="
7 ftp -n<<!
8 open 11.11.11.11 21
9 user username passwd
10 binary
11 lcd /opt/awr
12 cd /ftp/orcl
13 put awr_${mydate}.tar.gz
14 close
15 bye
16 !
17 echo "=======================FTP end============================"
18 echo "=================delete the tar file====================="
19 rm awr_${mydate}.tar.gz
20 echo "=================delete the tar file end====================="
21 echo "=================delete the old file ====================="
22 find ${mydir} -name "*.html" -type f -mtime +3 -exec rm {} \;
23 echo "=================delete the old file end====================="

ftp.sh (Solaris 10版本):

 1 #!/usr/bin/sh
2 mydate=`date +%y%m%d`
3 mytoday=`date +%m%d`
4 mydir=/opt/awr
5 cd ${mydir}
6 touch ${mytoday}0000 TODAY
7 find *.html -newer TODAY | xargs tar -cvf awr_${mydate}.tar
8 gzip -c awr_${mydate}.tar > awr_${mydate}.tar.gz
9 echo "======================FTP start========================="
10 ftp -n<<!
11 open 11.11.11.11 21
12 user username passwd
13 binary
14 lcd /opt/awr
15 cd /ftp/orcl
16 put awr_${mydate}.tar.gz
17 close
18 bye
19 !
20 echo "=======================FTP end============================"
21 echo "=================delete the tar and temp file====================="
22 rm awr_${mydate}.tar
23 rm TODAY
24 rm awr_${mydate}.tar.gz
25 echo "=================delete the tar and temp file end====================="
26 echo "=================delete the old file ====================="
27 find ${mydir} -name "*.html" -type f -mtime +0 -exec rm -rf {} \;
28 echo "=================delete the old file end====================="

crontab:

0 0-23 * * * sh /opt/awr/awr.sh
5 23 * * * sh /opt/awr/ftp.sh

Oracle AWR报告自动生成并ftp脚本的更多相关文章

  1. Oracle AWR报告的生成

    生成AWR报告需要dbms_workload_repository包的权限. 一.以oracle用户登录到数据库服务器 二.进入SQLPLUS 三.执行脚本 @?/rdbms/admin/awrrpt ...

  2. Oracle Awr报告_生成

    AWR的概念 Oracle数据库是一个使用量很多的数据库,关于Oracle数据库的性能.Oracle10g以后,Oracle提供了一个性能检测的工具:AWR(Automatic Workload Re ...

  3. (原创)如何在性能测试中自动生成并获取Oracle AWR报告

    版权声明:本文为原创文章,转载请先联系并标明出处 由于日常使用最多的数据库为Oracle,因此,最近又打起了Oracle的AWR报告的主意. 过去我们执行测试,都是执行开始和结束分别手动建立一个快照, ...

  4. [转]oracle awr报告生成和分析

    转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...

  5. Oracle AWR报告生成和性能分析

    目录 一.AWE报告生成步骤 1.1 工具选择 1.2 自动创建快照 1.3 手工创建快照 1.4 生成AWR报告 二.AWR报告分析 2.1 AWR之DB Time 2.2 AWR之load_pro ...

  6. ORACLE AWR报告生成步骤

    ORACLE AWR报告生成步骤 (以PL/SQL中命令窗口为例) 1.sqlplus或plsql的commod窗口(命令窗口)运行命令 @D:\oracle\product\10.2.0\db_1\ ...

  7. Oracle AWR报告指标全解析-11011552

    1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ...

  8. 快速熟悉 Oracle AWR 报告解读

    目录 AWR报告简介 AWR报告结构 基本信息 Report Summary Main Report RAC statistics Wait Event Statistics 参考资料 本文面向没有太 ...

  9. Oracle AWR 报告详解

    转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...

随机推荐

  1. hlsl 的tex函数

    texCUBE http://msdn.microsoft.com/en-us/library/windows/desktop/bb509687(v=vs.85).aspx

  2. 0327定时执行--存储过程--dbms_job--dbms_scheduler.create_job

    --oracle job 定时执行 存储过程 --建一张测试表 create table Person( name ), sex ) ); / --创建测试的存储过程 create or replac ...

  3. CString 转换成 char *

    最近用到CString类,转换成 char * 类型,下面介绍用法: 一.CString 和 LPSTR 转换: CString转换成LPSTR: 方法一:CString server; LPSTR ...

  4. netbeans 7安装xdebug调试php程序

    1.下载安装xdebug 先从xdebug官网下载对应php版本的xdebug组件,下载地址是:http://www.xdebug.org/download.php 如果不确定下载哪个版本的xdebu ...

  5. java数据结构学习(一)之二分查找

      二分查找法与我们在孩童时期玩过的猜数的游戏一样,这个游戏里一个朋友会让你猜他正想的一个1至100的数,当你猜了一个数后,他会告诉你三种选择的一个:你猜的比她想的大,或小,或猜中了.为了能用最少的次 ...

  6. IOS 中的MVC设计模式

  7. ***iOS 项目的目录结构能看出你的开发经验

    最近有师弟去面试iOS开发,他谈论到,面试官竟然问他怎么分目录结构的,而且还具体问到每个子目录的文件名. 目录结构确实很重要,面试官问他这些无疑是想窥探他的开发经验.清晰的目录结构,可让人一眼知道对应 ...

  8. POJ2676Sudoku

    http://poj.org/problem?id=2676 题意 : 这个是我最喜欢玩的数独了,就是一个9乘9的宫格,填上1到9九个数字,每行每列每个宫格之内不能有重复的数字,给出的九宫格中,0是待 ...

  9. hdu 4586 Play the Dice

    思路:设期望值为s,前m个是再来一次机会,则有 s=(a[1]+s)/n+(a[2]+s)/n+……+(a[m]+s)/n+a[m+1]/n…… 化简:(n-m)s=sum 当sum=0时,为0: 当 ...

  10. lintcode :sort letters by case字符大小写排序

    题目 字符大小写排序 给定一个只包含字母的字符串,按照先小写字母后大写字母的顺序进行排序. 您在真实的面试中是否遇到过这个题? Yes 样例 给出"abAcD",一个可能的答案为& ...