当前位置:  数据库>oracle

Oracle下批量生成ADDM报告

    来源: 互联网  发布时间:2017-06-12

    本文导语: 之前写过一篇文章 Oracle 批量生成AWR报告(),我们之前每天监控AWR报告,及时消除性能隐患。现在又多了一种手段,生成ADDM报告,听取下Oracle的建议未尝不可。 ADDM能发现定位的问题包括:.操作系统内存页入页出问题.由于Oracl...

之前写过一篇文章 Oracle 批量生成AWR报告(),我们之前每天监控AWR报告,及时消除性能隐患。现在又多了一种手段,生成ADDM报告,听取下Oracle的建议未尝不可。

ADDM能发现定位的问题包括:
.操作系统内存页入页出问题
.由于Oracle负载和非Oracle负载导致的CPU瓶颈问题
.导致不同资源负载的Top SQL语句和对象——CPU消耗、IO带宽占用、潜在IO问题、RAC内部通讯繁忙
.按照PLSQL和JAVA执行时间排的Top SQL语句.
.过多地连接 (login/logoff).
.过多硬解析问题——由于shared pool过小、书写问题、绑定大小不适应、解析失败原因引起的。
.过多软解析问题
.索引查询过多导致资源争用.
.由于用户锁导致的过多的等待时间 (通过包dbms_lock加的锁)
.由于DML锁导致的过多等待时间(例如锁住表了)
.由于管道输出导致的过多等待时间(如通过包dbms_pipe.put进行管道输出)
.由于并发更新同一个记录导致的过多等待时间(行级锁等待)
.由于ITL不够导致的过多等待时间(大量的事务操作同一个数据块)
.系统中过多的commit和rollback(logfile sync事件).
.由于磁盘带宽太小和其他潜在问题(如由于logfile太小导致过多的checkpoint,MTTR设置问题,过多的undo操作等等)导致的IO性能问题I
.对于DBWR进程写数据块,磁盘IO吞吐量不足
.由于归档进程无法跟上redo日至产生的速度,导致系统变慢
.redo数据文件太小导致的问题
.由于扩展磁盘分配导致的争用
.由于移动一个对象的高水位导致的争用问题
.内存太小问题——SGA Target, PGA, Buffer Cache, Shared Pool
.在一个实例或者一个机群环境中存在频繁读写争用的热块
.在一个实例或者一个机群环境中存在频繁读写争用的热对象
.RAC环境中内部通讯问题
.LMS进程无法跟上导致锁请求阻塞
.在RAC环境中由于阻塞和争用导致的实例倾斜
.RMAN导致的IO和CPU问题
.Streams和AQ问题
.资源管理等待事件

Oracle AWR报告生成与查看

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

Oracle AWR报告生成步骤

使用方法: 在E盘下面建立addm的目录,将三个文件放入到其中addm.cmd、addm.sql、myaddm.sql.
前提连上的用户需要被赋予两个权限。

grant select any dictionary to user;-----user为生产数据库账号

grant advisor to user;-------user为生产数据库账号

1. 文件名:addm.cmd     

 内容:  cmd.exe /c sqlplus username/password@servername @addm.sql

2. 文件名: addm.sql

 内容:

@@E:addmmyaddm.sql 0 8
@@E:addmmyaddm.sql 8 12
@@E:addmmyaddm.sql 12 14
@@E:addmmyaddm.sql 14 18
@@E:addmmyaddm.sql 18 24
exit

3. 文件名: myaddm.sql

内容:


set echo off;
set veri off;
set feedback off;
set termout on;
set heading off;
set linesize 300;
var dbid number;
var inst_num number;
var bid number;
var eid number;
var bhour varchar2(10);
var ehour varchar2(10);
var task_name  varchar2(40);
begin
  :bhour      :=  &1;
  :ehour      :=  &2;
  if(length(:bhour)=1)
    then :bhour := '0'||:bhour;
  end if;
  if(length(:ehour)=1)
    then :ehour := '0'||:ehour;
  end if; 
end;
/
begin
select min(snap_id) into :bid from dba_hist_snapshot s
 where (to_char(sysdate-1 , 'yyyy-mm-dd') || ' ' ||:bhour) =
      to_char(s.end_interval_time, 'yyyy-mm-dd HH24');
select max(snap_id) into :eid from dba_hist_snapshot s
 where (to_char(sysdate-1 , 'yyyy-mm-dd') || ' ' ||:bhour) =
      to_char(s.end_interval_time, 'yyyy-mm-dd HH24');
if(:ehour=24)
    then select max(snap_id) into :eid from dba_hist_snapshot s where (to_char(sysdate,'yyyy-mm-dd')||' 00') =to_char(s.end_interval_time,'yyyy-mm-dd HH24');
end if; 
select dbid into :dbid from v$database;
select instance_number into :inst_num from v$instance;
end;
/


column report_name new_value report_name noprint;
select 'PMS_'||:inst_num||'_'||to_char(sysdate-1 ,'yyyymmdd')||'_'||:bhour||'-'||:ehour||'.txt' report_name from dual;
begin
  declare
    id number;
    name varchar2(100);
    descr varchar2(500);
  BEGIN
    name := '';
    descr := 'ADDM run: snapshots [' || :bid || ', '
              || :eid || '], instance ' || :inst_num
              || ', database id ' || :dbid;
    dbms_advisor.create_task('ADDM',id,name,descr,null);
    :task_name := name;
    dbms_advisor.set_task_parameter(name, 'START_SNAPSHOT', :bid);
    dbms_advisor.set_task_parameter(name, 'END_SNAPSHOT', :eid);
    dbms_advisor.set_task_parameter(name, 'INSTANCE', :inst_num);
    dbms_advisor.set_task_parameter(name, 'DB_ID', :dbid);
    dbms_advisor.execute_task(name);
  end;
end;
/


spool &report_name;
set long 1000000 pagesize 0 longchunksize 1000
column get_clob format a80
select dbms_advisor.get_task_report(:task_name, 'TEXT', 'TYPICAL')
from  dual;
spool off;
prompt
prompt End of Report
prompt Report written to &report_name.


set termout on;
clear columns sql;
ttitle off;
btitle off;
repfooter off;
undefine report_name


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,