AWR

article/2025/9/24 14:57:14

AWR自动工作量资料档案库: AWR用于收集关于该特定数据库的操作统计信息和其他统计信息,oracle以固定的时间间隔(默认60分钟)为其所有重要统计信息和负载信息执行一次快照,并将这些快照存储在AWR中。这些信息在AWR中保留给定的时间(默认为1周),然后被清除

 

AWR默认每隔60分钟从SGA中采样收集一次统计数据(10G则是GATHER_STATS_JOB收集的数据库对象的统计数据,11G则是auto optimizer stats collection收集的数据库对象的统计数据)以快照的方式存放在SYSAUX表空间,具体是以WRM$WRH$WRR$WRI$WRI$的系统视图保存起来,保存一周,然后删除。为了正确收集统计数据,STATISTICS_LEVEL设置为TYPICAL(默认)ALL,所以AWR快照里面保存的就是统计数据。

AWR (Automatic Workload Repository)通俗讲就是一堆历史性能数据,放在SYSAUX表空间上。

 

AWR数据最近一小时的放在内存,其他历史的放在表中

 

AWR=ASH(dba_hist_active_sess_history)+其他统计信息(含OS指标)和等待信息(dba_hist_sys_time_model、dba_hist_sysstat)

 

ASH其实就是v$active_session_history中数据,是存放在内存中,是放在SGA中的一些DB的读写及各种操作的统计信息

 

实验过v$active_session_history中数据每时每刻都不一样,且重启后之前的数据都没有了

 

 

 

10G开启关闭AWR

关闭awr(停止AWR快照的收集,不是统计数据的收集)

exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL => 0);

关闭awr,一般不建议如下操作,不仅关闭了AWR信息,也把CBO所需要的数据对象统计信息功能关闭了

exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');

开启awr,每隔20分钟收集一次,默认保留时间2

dbms_workload_repository.modify_snapshot_settings (interval => 20,retention => 2*24*60)

 

 

11G开启关闭AWR

关闭awr(停止AWR快照的收集,不是统计数据的收集)

exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL => 0);

关闭awr,一般不建议如下操作,不仅关闭了AWR,,也把其他一些数据对象统计信息功能关闭了

设置参数statistics_level=basic

上面两种关闭AWR方式的区别在于:设置satitstics_level,还可以进行手动创建快照,设置采集间隔为0,不可以手动创建快照.

 

启动awr,默认保留时间8

exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval=>60);

启动awr,默认保留时间要改为14天(20160分钟)

exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention=>20160, interval=>60);

 

 

 

 

 

AWR报告

Elapsed 为该AWR性能报告的时间跨度(自然时间的跨度,例如前一个快照snapshot4点生成的,后一个快照snapshot6点生成的,则若使用@?/rdbms/admin/awrrpt 脚本中指定这2个快照的话,那么其elapsed = (6-4)=2 个小时),一个AWR性能报告 至少需要2AWR snapshot性能快照才能生成 ( 注意这2个快照时间 实例不能重启过,否则指定这2个快照生成AWR性能报告会报错)AWR性能报告中的指标往往是后一个快照和前一个快照的指标的delta,这是因为 累计值并不能反映某段时间内的系统workload

 

 

AWR报告的所取的两个SNAP之间不能重启DB,ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的

AWR报告不可以跨实例的运行状态进行比较(宕机前后的不可以比较)

 

 

快照(snapshots)

快照是特定时间范围内的历史数据集合,再由ADDM进行性能比较。默认情况下,数据库每个小时产生一次快照,并将这些统计信息在工作量仓库中保留8 天。

默认每隔一小时,内存监控进程(MMON)自动地采集一次统计信息,并把这些信息存放到负载库中,一次采样就是一个快照。为了节省空间,采集的数据在7天后自动清除。快照的频率和保留时间可以由用户修改。

查看快照信息:select * from dba_hist_snapshot

 

 

 

AWR的由来:

    10g之前的oracle:用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$sessionv$session_wait中就会被删除;oracle10g及之后保留下了v$session_wait中的这些信息,并新出现了一个视图:v$session_wait_history。这个视图保存了每个活动sessionv$session_wait中最近10次的等待事件。但这对于一段时期内的数据库性能状况的监测是远远不够的,为了解决这个问题,就多出了v$active_session_historyASH)视图。ASH的采样数据是保存在内存中。而分配给ASH的内存空间是有限的,当所分配空间占满后,旧的记录就会被覆盖掉;而且数据库重启后,所有的这些ASH信息都会消失。这样,对于长期检测oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,这就是AWR。由于全部保存ASH中的信息是非常耗费时间和空间的,AWR采用的策略是:每小时对v$active_session_history进行采样一次,并将信息保存到磁盘中,并且保留7天,7天后旧的记录才会被覆盖。这些采样信息被保存在视图wrh$_active_session_history中。而这个采样频率(1小时)和保留时间(7天)是可以根据实际情况进行调整的,这就给DBA们提供了更加有效的系统监测工具。AWR永久地保存系统的性能诊断信息,由SYS用户拥有。一段时间后,你可能想清除掉这些信息;有时候为了性能诊断,你可能需要自己定义采样频率来获取系统快照信息。Oracle 10g在包dbms_workload_repository中提供了很多过程,通过这些过程,你可以管理快照并设定基线(baselines)

 

 

ASHActive Session History)的历史数据主要存储在基础表sys.wrh$_active_session_historydba_hist_active_sess_history

ASH的特点是:ASH取出抽样数据,并不是对所有数据进行采集

ASHV$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。

ASH每秒(默认,受隐含参数_ash_sampling_interval影响)对活动会话进行一次抽样采集,采集到的信息,临时储存于sga区域中的buffer,可以称为ash bufferv$active_session_history视图这里面所展示的是buffer中所采集到活动会话的统计信息.里面信息量的多少,信息保留时间的长短都与数据库的活跃性相关

 

ASH 内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(Automatic Workload Repository ,AWR) 由后台进程MMON完成。ASH信息同样被采集写出到AWR负载库中。由于内存不是足够的,所以MMNL进程在ASH写满后会将信息写出到AWR负载库中。ASH全部写出是不可接受的,所以一般只写入收集的10%的数据量

 

SYSAUX表空间满后,AWR将自动覆盖掉旧的信息,并在警告日志中记录一条相关信息:

ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_3533490838_1522 by 128 in                 tablespace SYSAUX

 

 

WRM$表存储AWR的元数据(awrinfo.sql脚本)

WRH$表存储采样快照的历史数据(awrrpt.sql脚本)

WRI$表存储同数据库建议功能相关的数据(ADDM相关数据)

 

写出到AWR负载库的ASH信息记录在AWR的基础表wrh$_active_session_history中,wrh$_active_session_history是一个分区表,Oracle会自动进行数据清理

 

 

v$session                                      (当前正在发生)

v$session_wait                            (当前正在发生)

v$session_wait_history              (会话最近的10次等待事件)

v$active_session_history           (内存中的ASH采集信息,理论为1小时)

wrh$_active_session_history    (写入AWR库中的ASH信息,理论为1小时以上)

dba_hist_active_sess_history   (根据wrh$_active_session_history生成的视图,10秒生成一次)

 

 

 

 

 

 

 

1.查看当前的AWR保存策略、设置:快照间隔、保存时间。

select * from dba_hist_wr_control;

 

2.AWR配置都是通过dbms_workload_repository包进行配置

 

  2.1 调整AWR产生snapshot的频率和保留策略,

  如将收集间隔时间改为30 分钟一次。并且保留5天时间(单位都是分钟):

SQL>exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);

  设置快照时间间隔为 20 分钟,保留时间为两天 -- 您可以发出以下命令。参数以分钟为单位。

  SQL> exec dbms_workload_repository.modify_snapshot_settings ( interval => 20, retention => 2*24*60 );

 

  2.2 关闭AWR,把interval设为0则关闭自动捕捉快照

  SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);

 

  2.3 手工创建一个快照(加不加括号都可以)

  SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

  SQL> exec dbms_workload_repository.create_snapshot;

 

  2.4 查看快照

SQL> select * from dba_hist_snapshot order by snap_id desc

 

  2.5 手工删除指定范围的快照

  SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 973, high_snap_id => 999, dbid => 262089084);

 

2.6 查看基线信息

  SQL> select * from dba_hist_baseline

 

 


 

 

 

 

基线(Baselines)

基线包含了一个特定时间范围的性能数据,用来在性能问题发生时,与其他类似的时间段进行比较。基线中的快照会被自动AWR清除进程排除,并无限期保留。一个基线定义在一对快照之间,快照通过他们的快照序列号识别.每个基线有且只有一对快照。

查看基线信息:select * from dba_hist_baseline

 

4.2.1  创建Baseline

Exec DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(start_snap_id=>7550,end_snap_id=>7660,baseline_name=>'am_baseline');

4.2.2  删除Baseline

    Exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name=>'am_baseline',cascade=>true);  

删除Baseline使用DROP_BASELINE过程,删除时可以通过cascade参数选择是否将其关联的Snapshots级别进行删除

 

 

 

通过基线比对

select * from TABLE(DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html(DBID, INSTANCE_NUMBER, startsnapid,endsnapid, DBID, INSTANCE_NUMBER, startsnapid,endsnapid));

执行后把结果粘贴到html格式的文件中,再用ie打开

 

 

 

 

 

本机或本实例AWR采集步骤

第一步SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql

第二步输入报告格式如html

第三步输入要查看几天之内的信息(默认保存7天在sysaux表空间,如果保存了三天后重启oracle则数据还在sysaux表空间中,因为awr是来自内存,不可以跨实例的运行状态进行比较(宕机前后的不可以比较))

第四步输入开始的snap号(在第三步会展示)

第五步输入结束的snap号(在第三步会展示)

第六步输入报告的名字,报告存放到具体地址中(在sql中输入exitpwd显示的当前路径)

 

当然也可以直接通过sql语句来获取

SQL> select * from table(dbms_workload_repository.awr_report_html(DBID, INSTANCE_NUMBER, startsnapid,endsnapid))

 

awrrpt.sql其实就是dbms_workload_repository.awr_report_html

dbms_workload_repository.awr_report_text

 

 

 


 

AWR比对报告((基线比对也是用这个)

SQL>@$ORACLE_HOME/rdbms/admin/awrddrpt.sql

 

当然也可以直接通过sql语句来获取

SQL>select * from TABLE(DBMS_WORKLOAD_REPOSITORY.awr_diff_report_html(DBID, INSTANCE_NUMBER, startsnapid,endsnapid, DBID, INSTANCE_NUMBER, startsnapid,endsnapid));

 

awrrpt.sql其实就是DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTMLDBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_TEXT

 

 

 

 

RAC环境下获取AWR报告

获取某个实例的

SQL>@$ORACLE_HOME/rdbms/admin/awrrpti.sql

 

获取全局的

SQL>@$ORACLE_HOME/rdbms/admin/ awrgrpt.sql

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2136458/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30126024/viewspace-2136458/


http://chatgpt.dhexx.cn/article/qawOdTuf.shtml

相关文章

达梦 awr

AWR 全称为自动工作集负载信息库(Automatic Workload Repository) ,采集数据库的性能相关数据,用来分析数据库性能问题,方便调优工作。 达梦中 awr 功能默认是关闭的,另外 mpp 集群不支持 awr 开启 AWR 功能 检查 awr 开启状态 达梦提供了 SF_CHECK_AW…

ORACLE调优深入理解AWR报告

什么是AWR? 一堆历史性能数据,放在sysaux表空间上,AWR和sysaux都是10g出现的,是oracle调优的关键特性。 默认快照间隔1小时;10g保存7天;11g保存8天; 可以通过DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SE…

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本 新建工程 File–New project 然后File-project as 即另存为新建一个工程,自己取好名字。 设置基本参量 AWR可以直接进行仿真频率和单位之类的基本设置。 如果你只需要基本的S参数仿真,那么…

理论实践:循序渐进理解AWR细致入微分析性能报告

理论实践:循序渐进理解AWR细致入微分析性能报告 黄凯耀 (Kaya) ACOUG核心会员,高级技术专家 曾经工作于Oracle Real World Database Performance Group,一个隶属于Oracle公司总部数据库产品管理的核心团队。大学及研究生时期专注于Linux应用开…

AWR概念原理涉及表和包

一:AWR概念 Oracle10g以后,Oracle提供了一个性能检测的工具:AWR(Automatic Workload Repository 自动工作负载库)这个工具可以自动采集Oracle运行中的负载信息,并生成与性能相关的统计数据。我们可以根据这…

三种编码方式(费诺曼编码,霍夫曼编码,哈夫曼树编码)的简单解释和介绍

一. 费诺曼(Fano)编码是一种前缀编码,其基本原理是将出现频率较高的符号用短的编码表示,而出现频率较低的符号则用长的编码表示。通过这种方式进行编码,可以达到更好的压缩效果。 费诺曼编码的具体过程如下: 将要编码的符号按照…

霍夫曼编码及解码(简单实现)

霍夫曼树 霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。 所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。 树的路…

霍夫曼树和霍夫曼编码原理

一、哈夫曼树的概念和定义 什么是哈夫曼树? 让我们先举一个例子。 判定树: 在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换…

学习笔记--霍夫曼树与霍夫曼编码解码

先摘一下百科的说法 “哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字&#x…

霍夫曼编码的matlab实现

霍夫曼编码的原理已经有很优秀的介绍博客了,给出现频率高的灰度级分配更短的码字无非就是利用数学中逆序乘积和最小的原理,具体的原理介绍我就不再赘述了。这里给大家分享一下我个人早先实现的霍夫曼编码matlab程序。废话不多说,直接上代码&a…

霍夫曼树和霍夫曼编码以及霍夫曼编码的应用

文章目录 霍夫曼树介绍1.1霍夫曼树的定义1.2霍夫曼树的几个概念1.3构建霍夫曼树的过程1.4代码实现霍夫曼树 霍夫曼编码介绍什么是霍夫曼编码通信领域的应用 字符串压缩1.构造霍夫曼树2.生成赫夫曼树对应的赫夫曼编码表3.通过生成的赫夫曼编码表,返回一个赫夫曼编码 …

霍夫曼编码判断

霍夫曼编码判断 (算法学习) 霍夫曼编码一定是前缀编码,即,没有任何一个编码是另一个编码的前缀。 此外,还需要明白霍夫曼编码构建的树中只有度为0和2的结点,不存在度为1的结点。这与玩全二叉树是不一样的概念,玩全二…

霍夫曼编码和LZ编码

文章目录 一、霍夫曼编码1.概念及编码步骤2.霍夫曼编码例题分析 二、LZ编码1.概念及编码步骤2.LZ编码例题分析 一、霍夫曼编码 1.概念及编码步骤 霍夫曼编码是定长到变长编码,其概率高的符号映射成较短的二进制序列,概率低的符号映射成较长的二进制序列…

[基础知识] 霍夫曼编码

来源:Reducible内容整理:张志宇该视频详细讲解了霍夫曼编码提出的思路历程。 目录 故事背景思路历程 通信系统示意衡量信息量编码和熵的关系香农-冯诺编码霍夫曼的改进 故事背景 1951 年,麻省理工学院的一名研究生 David Huffman 在 Robert F…

数据结构【二】:霍夫曼编码

霍夫曼编码(Huffman Coding)是可变长编码(VLC)的一种。本质上使用变长编码表对源符号进行编码,通过评估源符号出现概率的方法进行分类,将出现几率较高的源字符使用较短的编码,出现几率较低的源字…

霍夫曼树——霍夫曼编码

霍夫曼编码 基本介绍 霍夫曼编码是一种编码方式,属于一种程序算法霍夫曼编码是霍夫曼树在通讯领域的经典应用之一霍夫曼编码广泛用于数据文件的压缩,压缩率通常在20% 到90%,通常数据的重复率越高,那么压缩率就越高霍夫曼编码是可…

【数据结构】图解霍夫曼编码,看了就能懂

今天来给大家普及一下霍夫曼编码(Huffman Coding),一种用于无损数据压缩的熵编码算法,由美国计算机科学家大卫霍夫曼在 1952 年提出——这么专业的解释,不用问,来自维基百科了。 说实话,很早之前…

霍夫曼编码原理以及代码实现

霍夫曼编码压缩能够实现对于自然语言文件空间大幅压缩。对于普通的文本文件字符,简单起见,如果字符为ASCII,则文本中的每个字符使用7bit来表示,如果文本中有大量的重复相同序列,使用ASCII编码来保存存储会造成大量的空…

霍夫曼编码(huffman coding) (java实现)

文章目录 一、浅谈赫夫曼编码二、获取赫夫曼编码1.获取字符出现的次数2.创建赫夫曼树3.指定编码 三、代码实现1.指定编码代码2.完整代码 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、浅谈赫夫曼编码 赫夫曼编码(Huffman Coding)&#xff0c…

霍夫曼树:霍夫曼编码(Huffman Tree:Huffman Coding)

一、简介 霍夫曼树常处理符号编写工作。根据整组数据中符号出现的频率高低,决定如何给符号编码。如果符号出现的频率越高,则给符号的码越短,相反符号的号码越长。 相关术语 路径:从书中一个节点到另一个节点之间的分支构成这两个…