AWRレポートは毎日自動的にスクリプトを生成します

オリジナルの他の誰かが書いたスクリプトを参照するが、いくつかのミスの場所がありますが、直接実行することができない、それが修正になっていました

ビジネスニーズに応じて別のに続いて、次の世代の時間AWRを設定 


#!/ binに/ bashの                                              

#そうSQLPLUSコマンドは、crontabの中でスケジュールされたタスクを実行することはできません、環境変数ファイルの神託をロード(またはソース/home/oracle/.bash_profile付き)

/home/oracle/.bash_profile

#変数を定義----生成AWRレポートファイルの種類

AWR_FORMAT = HTML

#----変数を定義し、数日中にスナップリストを引っ張ります               

NUM_DAYS = 3

end_snap:終了スナップID番号は、変数----生成AWRレポート、すなわちを定義します  

MAX_SNAP_ID = $(エコー `SQLPLUS -S / SYSDBA << EOFとして

ページサイズ0オフのフィードバックにTRIMSPOOLをオフ見出し設定

SELECTトリム(MAX(SNAP_ID)) - DBA_HIST_SNAPSHOT FROM 3。

EOF`)

すなわち、#定義変数----生成AWRレポートが始まるスナップID:begin_snap

MIN_SNAP_ID = `exprのする$ MAX_SNAP_ID - 24` 

#AWRレポート生成されたファイルのパスとファイル名

AWR_LOG = /ホーム/オラクル/ AWR_shahand_`date「+%のYの%のM%のD_%のH%M'`.html

#AWRレポート生成

エコー-e "$のAWR_FORMATの\ nは$ NUM_DAYS \ nは$ MIN_SNAP_ID \ nは$ MAX_SNAP_ID \ nは$ AWR_LOG \ n" は|(?SQLPLUS -S / SYSDBA @ / RDBMS /管理/ awrrpt.sqlなど) 






改良版

oracleユーザーの下で

crontab -e

00 8 * * * /home/oracle/auto_awr.sh


mkdir /home/oracle/awr_log/

vi /home/oracle/auto_awr.sh

#!/bin/bash                                              


#每天早上8点执行,取昨天0点到今天0点的awr报告

#加载一下oracle的环境变量文件,不然 sqlplus 命令在crontab 计划任务里不能被执行(或者用 source /home/oracle/.bash_profile)

郑州同济医院:http://jbk.39.net/yiyuanzaixian/zztjyy/

. /home/oracle/.bash_profile

export ORACLE_SID=这里填写数据库的sid

#定义变量----生成awr报告的文件类型

AWR_FORMAT=html

#定义变量---- 拉取几天内的snap列表               

NUM_DAYS=3

#定义变量----生成的awr报告的结束snap ID  ,即:end_snap  

MAX_SNAP_ID=$(echo `sqlplus -S / as sysdba <<EOF

set heading off trimspool on feedback off pagesize 0

SELECT trim(max(SNAP_ID))-8 FROM DBA_HIST_SNAPSHOT;

EOF`)


#定义变量----生成的awr报告的开始snap ID  ,即:begin_snap

MIN_SNAP_ID=`expr $MAX_SNAP_ID - 24` 

#生成的awr报告的文件路径及文件名

AWR_LOG=/home/oracle/awr_log/AWR_shahand_`date '+%Y%m%d_%H%M'`_00_24.html

#生成awr报告

echo -e "$AWR_FORMAT\n$NUM_DAYS\n$MIN_SNAP_ID\n$MAX_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rdbms/admin/awrrpt.sql) 


#每天早上8点执行,取昨天9点到昨天17点的awr报告

#最大值减去15就是昨天的17点

MAX_SNAP_ID_2=$(echo `sqlplus -S / as sysdba <<EOF

set heading off trimspool on feedback off pagesize 0

SELECT trim(max(SNAP_ID))-15 FROM DBA_HIST_SNAPSHOT;

EOF`)

#最小值=最大值减去8就是9点了,这里expr里面的计算两个值之间与减号一定要有空格,否则报错

MIN_SNAP_ID=`expr $MAX_SNAP_ID - 8`

#设置awr报告生成路径及文件名

AWR_LOG=/home/oracle/awr_log/AWR_shahand_`date '+%Y%m%d_%H%M'`_09_17.html

#生成awr报告的命令

echo -e "$AWR_FORMAT\n$NUM_DAYS\n$MIN_SNAP_ID\n$MAX_SNAP_ID\n$AWR_LOG\n"|(sqlplus -S / as sysdba @?/rd


おすすめ

転載: blog.51cto.com/14510269/2431345