Archive

Posts Tagged ‘awr’

awr report for every hour

July 7th, 2009

awr报告是获取数据库性能的重要入口。常规的使用方法是直接sqlplus调用awrrpt.sql来生成指定snapID的awr报告。但当需要生成每小时的awr报告时,使用这个方法就不是很方便了。即使是用bash脚本来写也相对来说麻烦一些。

这时候,我们可以使用dbms_workload_repository.awr_report_text(awr_report_html是用来生成html格式的)来生成awr报告.

SELECT output FROM TABLE(dbms_workload_repository.awr_report_text(1219033930,1,3,45))

其中4个参数分别为:DBID,instance_id,start_snap_id,end_snap_id.

通过脚本来控制输入输出,完成生成每小时的awr报告还是很容易的。

#!/bin/bash
#env vars
ORACLE_HOME=/u01/app/oracle/db_1
ORACLE_SID=orcl1
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID
export PATH
 
#vars
typeset -i start_snap=$1
typeset -i end_snap=$2
typeset -i start_id=$1
typeset -i end_id=`expr $1 + 1`
 
DBID=1219033930
instance_num=1
hostn=`hostname`
connect_str="system/welcome1"
plsql_set="set heading off feedback off pagesize 9999 linesize 500"
sql_awr="SELECT output FROM TABLE(dbms_workload_repository.awr_report_text(${DBID},${instance_num},${start_id},${end_id}));"
spool_loc="${hostn}_awr.rpt"
 
SQL()
{
  echo $connect_str
  echo $plsql_set
  while [ $start_snap -lt $end_snap ]
  do
     echo $sql_awr
     sleep 10
     start_snap=`expr $start_snap + 1`
	 start_id=`expr $start_id + 1`
	 end_id=`expr $end_id + 1`
  done
}
 
#begin sql
SQL|sqlplus -s$spool_loc

-END-

Oracle ,