Oracle AWR报告自动生成并ftp脚本

摘要:
该脚本主要由以下部分组成:awr。sql用于执行sqlplus中的脚本,该脚本可以直接在Internet上找到。ftp。Sh用于打包和压缩每天生成的awr报告,执行ftp传输,并清理过期报告。Linux和solaris略有不同。Crontab用于执行计划任务并根据需要进行调整。以下是具体的脚本内容,可以根据需要进行调整。

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

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脚本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇UltraEdit注册机原理简单说明QTreeWidget里嵌套表格QTableView下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SqlServer基础之(触发器)

SqlServer基础之(触发器)  阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器  概念:   触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是...

Oracle连接字符串总结(转)

  Oracle XE     标准连接         Oracle XE(或者"Oracle Database 10g Express Edition")是一个简单免费发布的版本。 以下是语法格式: Driver=(Oracle in XEClient);dbq=111.21.31.99:1521/XE;Uid=myUsername;Pwd=myP...

java中 mapper.xml 文件中resultmap

<resultMap type="org.springblade.desk.entity.sap.purchase.SapProcessPurchaseOrder"> <result column="card_code" property="cardCode"/> <result colu...

推荐一个免费开源的 SFTP 服务器,似乎 Windows、Linux、macOS 都可以使用

项目地址: https://github.com/drakkan/sftpgo 下载地址: 在 Release 中根据自己的系统情况进行选择下载 https://github.com/drakkan/sftpgo/releases 运行方式: 1、直接运行:打开 cmd,输入命令:sftpgo serve(直接输入 sftpgo 可以看到更多命令选项) 2...

ThinkPHP的连贯操作方法中field方法

1 ThinkPHP的连贯操作方法中field方法有很多的使用技巧,field方法主要目的是标识要返回或者操作的字段,下面详细道来。 2 3 1、用于查询 4 在查询操作中field方法是使用最频繁的。 5 6 $Model->field('id,title,content')->select(); 7 这里使用field方法...

Jenkins+Gradle+Git自动打apk包,并上传到ftp

软件安装: 1、安装Jenkins、git、AndroidSDK 2、配置AndroidSDK环境变量 ANDROID_HOME:D:Androidsdk PATH:%ANDROID_HOME%platform-tools;%ANDROID_HOME% ools 环境配置: 1、打开Jenkins首页,进入系统管理--插件管理--可选插件列表,安装Grad...