(Oracle)自定义调用AWR
spool &report_name; select output from table(dbms_workload_repository.&fn_name( :dbid,
:inst_num,
:bid, :eid,
:rpt_options )); spool off; select output from table(dbms_workload_repository.&fn_name( :dbid,:inst_num,:bid, :eid,:rpt_options )); &fn_name->类型名称如awr_report_html和awr_report_text
:dbid->数据库id号
:inst_num->实例名
:bid->snap开始id
:eid->snap结束id
:rpt_options->控制显示ADDM
--conn / as sysdba;
set echo off;
set veri off;
set feedback off;
set termout on;
set heading off; variable rpt_options number; define NO_OPTIONS = 0;
define ENABLE_ADDM = 8; -- according to your needs, the value can be 'text' or 'html'
define report_type='html';
begin
:rpt_options := &NO_OPTIONS;
end;
/ variable dbid number;
variable inst_num number;
variable bid number;
variable eid number;
variable dbname varchar2(9);
variable btime number;
variable etime number;
begin
select dbid into :dbid from v$database;
select instance_number into :inst_num from v$instance;
select max(snap_id)-24 into :bid from dba_hist_snapshot where DBID=:dbid;--生成的awr 快照开始时间可以自定义。注意如果中间有重启数据库,会导致获取awr报告失败。
select max(snap_id) into :eid from dba_hist_snapshot where DBID=:dbid;
select lower(NAME) into :dbname from v$database;
select to_char(end_interval_time,'YYYYMMDDHH24') into :btime from dba_hist_snapshot where snap_id=:bid;
select to_char(end_interval_time,'DDHH24') into :etime from dba_hist_snapshot where snap_id=:eid; end;
/ column ext new_value ext noprint
column fn_name new_value fn_name noprint;
column lnsz new_value lnsz noprint; --select 'txt' ext from dual where lower('&report_type') = 'text';
select 'html' ext from dual where lower('&report_type') = 'html';
--select 'awr_report_text' fn_name from dual where lower('&report_type') = 'text';
select 'awr_report_html' fn_name from dual where lower('&report_type') = 'html';
--select '80' lnsz from dual where lower('&report_type') = 'text';
select '' lnsz from dual where lower('&report_type') = 'html'; select :dbname||'_'||:btime||'to'||:etime||'.'||'&ext' report_name from dual;
set linesize &lnsz; -- print the AWR results into the report_name file using the spool command: column report_name new_value report_name noprint; select :dbname||'_'||:btime||'to'||:etime||'.'||'&ext' report_name from dual;
set termout off;
spool &report_name;
select output from table(dbms_workload_repository.&fn_name(:dbid, :inst_num,:bid, :eid,:rpt_options ));
spool off; set termout on;
clear columns sql;
ttitle off;
btitle off;
repfooter off;
undefine report_name
undefine report_type
undefine fn_name
undefine lnsz
undefine NO_OPTIONS
exit
设定shell脚本定时执行并发送邮件。
Script:
[oracle@ ~]$ cat /opt/app/oracle/ora_auto/oracle_auto_awr.sh
#!/bin/bash # auto gather awrrpt.sql
#
# parameters:
# $ -> SID
#
# The whole package includes files;
# oracle_auto_awr.sh(this file)
# ora_auto_awrrpt.sql
# #引用oracle数据库环境变量
. /home/oracle/.bash_profile ->(注意加上oracle环境变量,不然crontab排程运行时不能正常执行sql脚本). /home/oracle/.bash_profile
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
ORACLE_BASE=/opt/app/oracle;export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2./dbhome_1;export ORACLE_HOME
ORA_AUTO_PATH='/opt/app/oracle/ora_auto'
#自定义awr脚本的SQL语句
ORACLE_SQL=$ORA_AUTO_PATH/ora_auto_awrrpt.sql
DAY_TIME=`date +"%Y%m%d"`
AWR_ZIP=AWR_$DAY_TIME.zip
cd $ORA_AUTO_PATH
echo "Dear Sir:">mail.log
echo " This is oracle database Awr.">>mail.log
mkdir -p $ORA_AUTO_PATH/$DAY_TIME
#脚本后跟上多个数据库名,用于集合
array_1=$@
for sid in ${array_1[@]}
do sleep tnschk=`tnsping $sid`
tnschk2=` echo $tnschk | grep -c OK`
if [ ${tnschk2} -eq ] ; then
echo " $sid start gather." >>mail.log
###连接数据库字符串,注意连接数据库的账户是否有权限执行awr
ORACLE_CONN='xxx/xxxx@'$sid
$ORACLE_HOME/bin/sqlplus -s $ORACLE_CONN @$ORACLE_SQL >sqlplus_$sid_output.log soput="`cat $ORA_AUTO_PATH/sqlplus_$sid_output.log|grep html`"
if [ -f $soput ]; thenecho " mv $soput $ORA_AUTO_PATH/$DAY_TIME">>mail.log
mv $soput $ORA_AUTO_PATH/$DAY_TIME
fi
else
echo " No TNS Listener on $sid" >>mail.log
fi
done
echo " zip -r $AWR_ZIP $DAY_TIME" >>mail.log
#`/bin/tar -zcf $AWR_ZIP $DAY_TIME` 将awr报表进行压缩,减少邮件传输的流量
`/usr/bin/zip -r $AWR_ZIP $DAY_TIME`
echo " Thanks!">>mail.log mutt -s "[xxxx][DATABASE][AWR]: time: `date '+%y%m%d-%H%M'`" "接受邮件地址" -a $ORA_AUTO_PATH/$AWR_ZIP < $ORA_AUTO_PATH/mail.log rm -rf $DAY_TIME 设定排程[xxx.xxx.xx.x]
* * * /xxx/app/oracle/ora_auto/oracle_auto_awr.sh oracle01 oracle02 oracle03


(Oracle)自定义调用AWR的更多相关文章
- (Oracle)自定义调用AWR&ADDM
Oracle->自定义调用AWR&ADDM 需求描述: 前面设定每天自动生成AWR用于提供前一天的数据库状态信息,但因数据库和信息过多不利于直观检查.此次新增ADDM诊断. ADDM诊断 ...
- Mybatis下配置调用Oracle自定义函数返回的游标结果集
在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper names ...
- Oracle中的AWR,全称为Automatic Workload Repository
Oracle中的AWR,全称为Automatic Workload Repository,自动负载信息库.它收集关于特定数据库的操作统计信息和其他统计信息,Oracle以固定的时间间隔(默认为1个小时 ...
- Oracle自定义数据类型 1
原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nva ...
- Oracle自定义函数和存储过程示例,自定义函数与存储过程区别
参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...
- Oracle自定义聚集函数
今天工作中看见别人写的自定义聚集函数,所以一门心思的想搞懂,就在网上找资料了. 自定义聚集函数 自定义聚集函数接口简介 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG ...
- oracle 存储过程调用 执行
oracle 存储过程调用 博客分类: 数据库相关 oracle存储过程 2011年02月11日 星期五 14:47 SQL中调用存储过程语句: call procedure_name(); 调用 ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- .NET易忘备留 ORACLE存储过程调用
1.Oracle存储过程调用[返回信息,单体或者列表] public IResult FundBuild(string partnerId,string userId, DateTime beginD ...
随机推荐
- 项目经验:GIS<MapWinGIS>建模第一天
随便记录下项目的进展情况: GIS平台系统,实现整个供水系统的协调与统一.系统以管网为基础依据,建立可实现供水管网规划设计.输配管理.图档管理.抢修辅助决策及综合查询.统计等功能. 本文档的预期读者是 ...
- linux第一个C语言和sh脚本
linux第一个C语言 $ gedit hello_world.c #include <stdio.h> int main(void) { printf("hello world ...
- memcached php-memcache 扩展
1.安装 libevent wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz tar ...
- Win10安装msi程序报错2503和2502错误解决方案
刚升级了系统到win10,重新搭建开发环境,在安装scala的时候一直报2503.2502错误,如图 试了好几种办法都不好使,现在罗列依次用到的三种方法: 一.命令提示符(管理员)启动 "w ...
- Oracle sql trace用法
sql_trace是oracle提供的一个非常好的跟踪工具,主要用来检查数据库的异常情况,通过跟踪数据库的活动,找到有问题的语句. 一.概述: SQL_TRACE是Oracle的一个非常强大的工 ...
- Node.js在windows平台的安装
nodejs官网:https://nodejs.org/en/ 下载安装: node-v8.4.0-x64.msi 检查 path 中是否已经配置nodejs的安装路径,如果没有要配置. node ...
- 截取Excel字符串的部分字符
截取Excel字符串的部分字符 我们可以使用Mid.Left.Right等函数从长字符串内获取一部分字符. ①LEFT函数: LEFT(text,num_chars) Text是包含要提取字符的 ...
- bzoj1413 [ZJOI2009]取石子游戏
Description 在研究过Nim游戏及各种变种之后,Orez又发现了一种全新的取石子游戏,这个游戏是这样的: 有n堆石子,将这n堆石子摆成一排.游戏由两个人进行,两人轮流操作,每次操作者都可以从 ...
- HDU 5724 Chess(SG函数)
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...
- 三·管理和配置Subversion(基于Centos7)
基于上一篇文章 二·安装Subversion(基于Centos7)中安装的Subversion,本篇文章讲述Subversion的管理和配置 1.添加环境变量 输入命令vi /etc/profile ...