Oracle 每天自动生成AWR报告

经验丰富的老员工希望能够每天为数据库生成1个AWR报告,以便于后期分析数据库的性能变化,手动生成太麻烦,查了一下资料,发现可以自动生成,过程如下。

数据库环境:11gR2 RAC(双节点)

AWR报告:由于是RAC数据库,希望生成每个节点的报告及全局报告,时间段为:第一天的0点~第二天的0点。

(1)在oracle服务器上创建路径

server2$[/home/oracle]mkdir awrreport

(2)创建directory并授权(使用sys账户执行)

create or replace directory DIR_AWRREPORT as ‘/home/oracle/awrreport‘;
grant read,write on directory DIR_AWRREPORT to mydba;                    -- mydba为具有dba权限的用户

grant select on v_$database to mydba;
grant select on dba_hist_snapshot to mydba;
grant execute on sys.dbms_workload_repository to mydba;

(3)编写脚本(使用监控账户mydba执行)

CREATE OR REPLACE PROCEDURE auto_awrreport
AS
/*
用途 :自动生成AWR报告
创建人 :gegeman
创建日期:2017-12-08
*/
start_snap number;
end_snap number;
rpt_interval number := 24; --报告间隔(小时)
start_time varchar2(14);
end_time varchar2(14);
awr_file utl_file.file_type;
v_dbid number;
v_dbname varchar2(20);

begin
--确定数据库名称与id
select dbid,name into v_dbid,v_dbname from v$database;

---查询起始的快照id
select max(snap_id) into end_snap from dba_hist_snapshot;
start_snap := end_snap-rpt_interval;

---格式化快照时间
select to_char(end_interval_time-rpt_interval/24, ‘yyyymmddhh24‘),to_char(end_interval_time, ‘yyyymmddhh24‘)
into start_time,end_time
from dba_hist_snapshot
where snap_id = end_snap and instance_number = 1;

--实例1报告
awr_file := utl_file.fopen(‘DIR_AWRREPORT‘,lower(v_dbname)||‘_1_‘||start_time||‘_‘||end_time||‘.html‘, ‘a‘,32767);
for awr_info in (select output from table(dbms_workload_repository.awr_report_html(v_dbid,1,start_snap,end_snap,0))) loop
UTL_FILE.put_line(awr_file,awr_info.output);
end loop;
utl_file.fclose(awr_file);

--实例2报告
awr_file := utl_file.fopen(‘DIR_AWRREPORT‘,lower(v_dbname)||‘_2_‘||start_time||‘_‘||end_time||‘.html‘, ‘a‘,32767);
for awr_info in (select output from table(dbms_workload_repository.awr_report_html(v_dbid,2,start_snap,end_snap,0))) loop
UTL_FILE.put_line(awr_file,awr_info.output);
end loop;
utl_file.fclose(awr_file);

--全局报告
awr_file := utl_file.fopen(‘DIR_AWRREPORT‘,lower(v_dbname)||‘_global_‘||start_time||‘_‘||end_time||‘.html‘, ‘a‘,32767);
for awr_info in (select output from table(dbms_workload_repository.awr_global_report_html(l_dbid => v_dbid,l_inst_num => ‘‘,l_bid => start_snap,l_eid => end_snap,l_options => 0))) loop
UTL_FILE.put_line(awr_file,awr_info.output);
end loop;
utl_file.fclose(awr_file);

end auto_awrreport;

(4)授予监控用户执行procedure权限(使用sys账户)

grant execute on mydba.auto_awrreport to mydba;

(5)创建job,每天晚上12:30执行(监控账户)

declare
job1 number;
begin
sys.dbms_job.submit(job => job1,
what => ‘auto_awrreport;‘,
next_date => sysdate,
interval => ‘TRUNC(SYSDATE+1) + 30/(24*60)‘,
instance => 2
);
end;
时间: 2024-10-12 12:04:32

Oracle 每天自动生成AWR报告的相关文章

一个自动生成awr报告的shell脚本

最近在学习shell编程,搞一点点小工具自动完成awr报告的收集工作,方便系统出现问题时问题排查.脚本内容如下,系统收集每天开始时间6点结束时间20点的awr报告并存储在/u01/shell_t/awr/目录下 #! /bin/sh export ORACLE_SID=PROD1export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 m=(`sqlplus -S "/

oracle中如何生成awr报告

1.进入数据库 sqlplus / as sysdba 2.查看用户 show parameter db_name 3.开始压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 4. 结束压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 5.输入命令 @?/rdbms/admin/awrrpt 备注:4和5步骤中不执行,后面默认产生系统规定的时间节点(默认人一小时生成一次报告)

oracle rac自动生成awr

cat awr.sql ######EXEC P_AWR_REPORT('201604251000', '201604251100', 'D_OUTPUT', '', FALSE); FALSE为rac生成awr EXEC P_AWR_REPORT('201604251000', '201604251100', 'D_OUTPUT', '', FALSE);CREATE DIRECTORY D_OUTPUT AS '/oracle/products/11.2/db/scripts/mon/log

【oracle中如何生成awr报告】

1.进入数据库 sqlplus / as sysdba 2.查看用户 show parameter db_name 3.开始压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 4. 结束压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 5.输入命令 @?/rdbms/admin/awrrpt 备注:4和5步骤中不执行,后面默认产生系统规定的时间节点(默认人一小时生成一次报告)

oracle11g生成awr报告

Oracle 11g RAC生成 AWR 报告方法  1.生成单实例 AWR 报告:@$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告:@$ORACLE_HOME/rdbms/admin/awrgrpt.sql 3.生成 RAC 环境中特定数据库实例的 AWR 报告:@$ORACLE_HOME/rdbms/admin/awrrpti.sql 4.生成 Oracle RAC 环境中多个数据库实例的 AWR 报告的方法:@$ORAC

oracle生成AWR报告

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/43971547 实验环境: 操作系统:win7 旗舰版 64bit 数据库:oracle 11G R2 64bit 第1步:登陆sqlplus C:\Users\Administrator>sqlplus / as sysdba 第2步:跑脚本 SQL> @

oracle手工生成AWR报告方法记录

AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定.问题SQL发现的重要手段.熟练掌握AWR报告,是做好开发.运维DBA工作的重要基本功. AWR报告的原理是基于Oracle数据库的定时镜像功能.默认情况下,Oracle数据库后台进程会以一定间隔(一小时)收集系统当前状态镜像,并且保存在数据库中.生成AWR报告时,只需要指定进行分析的时间段(开始镜像编号和结束镜像编号),就可以生成该时间段的性能分析情况.AWR镜像保存在数据库中的时间为一个月左右

ORACLE AWR概述及生成AWR报告

1.Overview of the Automatic Workload Repository The Automatic Workload Repository (AWR) collects, processes, and maintains performance statistics for problem detection and self-tuning purposes. This data is both in memory and stored in the database.

Oracle无法生成awr报告 ORA-20200错误

生成awr报告的过程中,发生awr报告没有快照,并返回ORA-20200错误. 查看dba_hist_active_session_history发现有数据,判断mmon和mmnl后台进程的问题,故需要重新启动mmon和mmnl后台进程 方法一: 重启数据库 方法二: 启用restricted模式,再立马禁用: alter system enable restricted session; alter system disable restricted session; alter日志 Stop