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报告了。