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-