共计 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 小编将为大家输出更多高质量的实用文章!
正文完