[原]批量生成AWR报告

      AWR可以方便快捷地对数据库的运行情况有个大致的了解,生成AWR报告也很容易,执行一下在sqlplus 中执行一下$ORACLE_HOME/rdbms/admin/awrrpt.sql然后按照提示填写好相关参数就可以生成AWR报告了。

      近日一个师弟问起是否可以批量生成,这也是一个很不错的需求啊,粗略看了一下awrrpt.sql,最终是调用dbms_workload_repository.awr_report_text或者dbms_workload_repository.awr_report_html,于是实现了一个山寨版,非常粗糙。

      由于可能产生很多份AWR报告,所以建议先建好一个目录。

mkdir myawr
cd myawr
sqlplus / as sysdba

      将以下内容复制到sqlplus中就可以了:

set linesize 120 ;
set pagesize 0;
set long 99999;
set heading off;
set termout off;
set echo off;
set feedback off;
set timing off;

select 
'spool my_awrrpt_'||snap_id||'_'||(snap_id+1)||'.html'||chr(10)||
'select output '||chr(10)||
'  from table(dbms_workload_repository.awr_report_text('||dbid||',1,'||snap_id||','||(snap_id+1)||'));'||chr(10)||
'spool off;'||chr(10)
from dba_hist_snapshot
where snap_id between 14866 and 14966 -1 and dbid=2594854151
----                  ^^^^^     ^^^^^             ^^^^^^^^^^ DB ID
----                  填入开始和结束的snapshot id
----  跑一次 ?/rdbms/admin/awrrpt.sql 就可以知道这些信息 了

---- 上面的空行不能删-----
spool my_awr.sql;
/
spool off ;
@my_awr.sql
---- 这里要等一段时间,多敲几下回车以保证上面的语句都执行 ---

exit;

      此时当前目录中就会生成一堆awr报告了。

posted @ 2011-01-01 17:40  killkill  阅读(1984)  评论(0编辑  收藏