怎么获取AWR的脚本

70次阅读
没有评论

共计 3573 个字符,预计需要花费 9 分钟才能阅读完成。

本篇内容介绍了“怎么获取 AWR 的脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

#!/bin/bash
#by raysuen
. ~/.bash_profile
AWR_FORMAT=html
NUM_DAYS=2
############################################
#获取指定时间的 snapid 的函数
############################################
getsnapID(){
 BEGIN_SNAP_ID=`sqlplus -S / as sysdba  -RAY
 set heading off trimspool on feedback off
 SELECT trim(SNAP_ID) FROM DBA_HIST_SNAPSHOT a,v\\$instance b where to_char(END_INTERVAL_TIME, yyyymmddhh34)= $1  and a.instance_number=b.instance_number;
 RAY`
 END_SNAP_ID=`sqlplus -S / as sysdba  -RAY
 set heading off trimspool on feedback off
 SELECT trim(SNAP_ID) FROM DBA_HIST_SNAPSHOT a,v\\$instance b where to_char(END_INTERVAL_TIME, yyyymmddhh34)= $2  and a.instance_number=b.instance_number;
 RAY`
 #判断获取的 snapid 是否为空
 if [ -z ${BEGIN_SNAP_ID} ];then
 echo  The script can not get a valid snap id,please enter a right time for -b. 
 exit 96
 if [ -z ${BEGIN_SNAP_ID} ];then
 echo  The script can not get a valid snap id,please enter a right time for -e. 
 exit 96
 BEGIN_SNAP_ID=`echo ${BEGIN_SNAP_ID} | sed  s/ //g `
 END_SNAP_ID=`echo ${END_SNAP_ID} | sed  s/ //g `
############################################
#获取帮助的函数
############################################
my_fun(){
 echo  SYNOPSIS: 
 echo  ./GET_AWR.sh -b begin_time -e end_time -n awr_name 
 echo  OPTIONS: 
 echo  -b specify a time for begin time of awr,format yyyymmddhh34 
 echo  -e specify a time for begin time of awr,format yyyymmddhh34 
 echo  -n specify a name for name of awr 
 echo  EXAMPLE: 
 echo  ./GET_AWR.SH -b 2019051708 -e 2019051709 -n test 
 echo  ./GET_AWR.sh -b \`date + %Y%m%d18  -d  +1 day ago \` -e \`date + %Y%m%d19  -d  +1 day ago \` -n test 
############################################
#脚本入口,获取参数
############################################
if [ $# -lt 1 ];then
 echo  You must specify parameters: 
 echo  -b begin time of awr 
 echo  -e end time of awr 
 exit 99
while (($# =1))
 if [  $1  ==  -b  ];then
 shift
 awrbegintime=$1
 shift
 continue
 if [  $1  ==  -e  ];then
 shift
 awrendtime=$1
 shift
 continue
 if [  $1  ==  -n  ];then
 shift
 awrname=$1
 shift
 continue
 if [  $1  ==  -h  ];then
 my_fun
 exit 0
 shift
############################################
#健壮性检查
############################################
#参数不可以为空
if [ -z ${awrbegintime} ];then
 echo  You must specify parameters:-b for begin time of awr 
 exit 98
if [ -z ${awrendtime} ];then
 echo  You must specify parameters:-e for end time of awr 
 exit 98
if [ -z ${awrname} ];then
 echo  You must specify parameters:-n for report name of awr 
 exit 98
#判断参数为时间
date -d  ${awrbegintime:0:8} ${awrbegintime:8:2}    /dev/null 2 1
if [ $? -ne 0 ];then
 echo  The valus of -b is invalid date. 
 exit 97
date -d  ${awrendtime:0:8} ${awrendtime:8:2}    /dev/null 2 1
if [ $? -ne 0 ];then
 echo  The valus of -e is invalid date. 
 exit 97
############################################
#执行函数,获取 snap id
############################################
getsnapID ${awrbegintime} ${awrendtime}
############################################
#定义 awr 报告的路径
############################################
AWR_LOG=/u02/logout/awr/AWR_${awrname}_${awrbegintime}_${awrendtime}.html
############################################
#获取 awr 报告
############################################
echo -e  $AWR_FORMAT\n$NUM_DAYS\n$BEGIN_SNAP_ID\n$END_SNAP_ID\n$AWR_LOG\n |(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql)   /dev/null
############################################
# 参数区分大小写
# -b awr 的开始时间,格式:yyyymmddhh34
# -e awr 的结束时间,格式:yyyymmddhh34
# -n awr 报告中的名字
# ./GET_AWR.SH -b  2019051708  -e  2019051709  -n test
# ./GET_AWR.sh -b `date + %Y%m%d18  -d  +1 day ago ` -e `date + %Y%m%d19  -d  +1 day ago ` -n test
############################################

“怎么获取 AWR 的脚本”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-24发表,共计3573字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)