AWR

(

Automatic Workload Repository

)作为对数据库性能诊断的工具,采集与性能相关的统计数据,根据这些统计数据中的性能指标,以跟踪潜在的问题。若因某些情况导致相关数据无法收集,就会对数据库性能诊断大打折扣。

以下列举

AWR

收集缓慢、挂起或缺失常见的几种情况:

STATISTICS_LEVEL

参数不为

ALL

TYPICAL

SYSAUX

表空间不足

系统资源

I/O

CPU

使用率过高

MMON/MMNL

进程异常

相关

FIXED TABLE

统计信息不准确

1、STATISTICS_LEVEL

参数不为

ALL

TYPICAL

初始化参数

STATISTICS_LEVEL

AWR

的采集信息受到参数

STATISTICS_LEVEL

的影响。这个参数有三个值:

BASIC

AWR

统计信息的关闭,只收集少量的数据库统计信息。

TYPICAL

:默认值,只有部分的统计收集,都是需要监控

oracle

数据库的典型行为。

ALL

:所有可能的统计都被捕捉,并且有操作系统的一些信息,这个级别的捕捉用的较少,比如要更多的

sql

诊断信息。

一般不会随便修改该参数,都使用默认值

TYPICAL

,所以这种情况下导致

AWR

无法收集统计数据的很少的。

2、SYSAUX

表空间不足

AWR

采集的统计数据都以

WRM$_*

WRH$_*

的格式命名的表存储在

SYSAUX

表空间上(

M

代表元数据

(metadata)

,而

H

代表历史数据

(historical)

)。可通过

@?/rdbms/admin/awrinfo.sql

x$kewrtb

查询相关的表信息。虽然

SYSAUX

表空间不足导致

AWR

无法生成是个低级问题

,但是有一种情况需要注意,因为

BUG

等导致

ASH/AWR

的基表数据无法清理。如:

SQL> select * from dba_hist_wr_control;      DBID SNAP_INTERVAL        RETENTION            TOPNSQL

---------- -------------------- -------------------- ---------262389084 +00000 01:00:00.0    +00007 00:00:00.0    DEFAULT

正常的每小时产生一个

SNAPSHOT

,保留

7

天。但一些基表如

WRH$_ACTIVE_SESSION_HISTORY

因为某些原因没有根据

sys.wrm$_wr_control

的设定进行清理。

SNAPSHOT

快照的保留就会超过

7

天,这时会导致

SYSAUX

被撑爆,以及收集

AWR

报告很慢的情况。具体解决办法

2

个:

1)alter session set “_swrf_test_action”=72;

2) 手工删除过期无用的快照:

exec dbms_workload_repository.drop_snapshot_range(low_snap_id => xxx, high_snap_id => xxxx, dbid => 262389084);

MOS

文档:

WRH$_ACTIVE_SESSION_HISTORY Does Not Get Purged Based Upon the Retention Policy (Doc ID

)

3、

系统资源

I/O

CPU

使用率过高

当系统负载很高时,许多用户进程都在争用资源,

AWR

报告的收集需要消耗系统主机的性能,当

awr

报告的收集时间超过

15

分钟,若这个时候数据库处于相当繁忙的状态,

数据库为了保证业务的正常运行,就自动把

AWR

功能的增强

。这种情况基本如下:

alert.log

中会出现如下告警信息:

Suspending MMON slave action xxx for 82800 seconds

或者

mmon trc

中出现如下的告警信息:

Unable to schedule a MMON slave at: Auto Flush Main 1

Slave action has been temporarily suspended    - Slave action had prior policy violations.

Unknown return code: 101

--可根据参考:If the system is so over-loaded that it takes over 15 minutes to gather statistics or other MMON tasks, this error is expected.It is a functionality enhancement in 11g, as it prevents MMON from locking

resources those other processes might be waiting for. In 10g , mmon slaves are allowed to run indefinitely.

从日志看,存在大量的

这是

11g

功能的增强,当系统处于

overload

状态时,

MMON

进程收集统计信息超过

15

分钟,则会终止该任务,

10g

会无限延期。所以系统资源不足也会导致

AWR

统计信息无法正常收集。

为什么是

15

分钟?请参考

MOS

文档:

Troubleshooting ORA-12751 "cpu time or run time policy violation" Errors (

文档

ID 761298.1)

Troubleshooting: Missing Automatic Workload Repository (AWR) Snapshots and Other Collection Issues (

文档

ID 1301503.1)

4、MMON/MMNL

进程异常

Memory Monitor(MMON)

MMON

主要用于

AWR

ADDM

MMON

会从

SGA

将统计结果写到系统表中

The Memory Monitor Light (MMNL)

mmon

进程主要是内存中

sql

信息,

ash

信息的收集工作,如果这些信息需要写入到磁盘(即一些数据字典表)中,那么就需要

MMNL

进程负责写入

MMON

MMNL

Mnnn

这些进程用于填充自动工作负载存储库(

Automatic WorkloadRepository

AWR

),这是

Oracle 10g

中新增的一个特性。

MMNL

进程会根据调度从

SGA

将统计结果刷新输出至数据库表。

MMON

进程用于“自动检测”数据库性能问题,并实现新增的自调整特性。

Mnnn

进程类似于作业队列的

Jnnn

Qnnn

进程;

MMON

进程会请求这些从属进程代表它完成工作。

由此可见,

MMON

MMNL

进程异常是

AWR

不能自动收集的根本原因。

遇到

AWR

无法收集的情况可以根据文档(

ID 1301503.1

)进行排查,检查

mmon

mmnl

进程是否正常。

ps -ef|egrep "mmon|mmnl"  #查看mmon和mmnl进程是否存oracle    32674      1  0 21:22 ?        00:00:01 ora_mmon_oracle    32676      1  0 21:22 ?        00:00:01 ora_mmnl_

这两个进程是

oracle

的非核心进程,可以

kill

掉,它们会自动启动进程,并且自动维护。若这两个进程没有问题,可以手动生成

AWR

看是否有效:

exec  dbms_workload_repository.create_snapshot();

然后再进一步诊断问题。

因为这两个进程都非核心进程,所以很多文档都是说可

kill

,重新唤起这个进程,让

AWR

可继续生成。在

11.2.0.4

中可能会存在起不来的情况,原因根据

MOS

文档:

AWR Snapshots Are Not Being Created Because MMON Is Not Being Respawned (

文档

ID 2023652.1)

可知:

5、FIXED TABLE

统计信息不准确

查看

mmon

进程的

trace

文件,出现以下报错:

** KEWROCISTMTEXEC - encountered error: (ORA-12751: cpu time or

run time policy violation)

*** SQLSTR: total-len=295, dump-len=240,

STR={insert into WRH$_SERVICE_STAT   (snap_id, dbid,

instance_number,    service_name_hash, stat_id, value) select

:snap_id, :dbid, :instance_number,   stat.service_name_hash,

stat.stat_id, stat.value from  v$active_services asvc, v$service_st}

DDE rules only execution for: ORA-12751

查看该

SQL

为何执行缓慢,发现

v$service_stats

视图数量很大。该视图记录的是最小的性能统计数据集,其中有个自动

service_name

来着

v$services

,它显示关于服务的信息。e

xpdp

每次备份开始,都会新增一个

service name

,备份结束后会去掉该

service name

,该动作会记录在

alert log

中,这个动作就会导致

v$service_stats

视图出现很多

unknown

的记录。

错误的执行计划:

每次逻辑导出时,会在

v$service_stats

视图中增加

service_name=unknow

的记录,导致

v$service_stats

视图中累积存储了大量

unknow service name

的记录,

AWR

快照生成过程中在执行上述

SQL

时,由于

fixed table

统计信息不准确或者尚无统计信息,

oracle

选择了效率较低的执行计划,

SQL

的执行消耗大量时间,导致

oracle

维护任务

cpu time policy violation

AWR

快照生成中断。

解决办法是:手动收集

fixed table

的统计信息(在

12 c

之前,固定的统计数据没有自动收集,它是对所有

X$

基表统计信息的收集,这个收集是要相对比较长时间的,同时评估好收集之后对其它

SQL

语句执行的影响。如

V$SESSION

V$PROCESS

V$LOCK

等常用视图相关

SQL

语句的执行计划影响)

select table_name,num_rows,last_analyzed from dba_tab_statistics where last_analyzed is not null order by last_analyzed desc;

exec dbms_stats.gather_fixed_objects_stats(no_invalidate => false);

fixed table

的统计信息

请参考文档:Fixed Objects Statistics (GATHER_FIXED_OBJECTS_STATS) Considerations (文档 ID 798257.1)

oracle突然变慢 awr,AWR收集缓慢、挂起的几种常见情况分析相关推荐

  1. 装oracle非常卡吗,win7系统安装完oracle电脑变卡的解决方法

    今天和大家分享一下win7系统安装完oracle电脑变卡问题的解决方法,在使用win7系统的过程中经常不知道如何去解决win7系统安装完oracle电脑变卡的问题,有什么好的办法去解决win7系统安装 ...

  2. oracle常用数据统计,学习笔记:Oracle DBMS_STATS常用方法汇总 常用于收集统计oracle...

    天萃荷净 Oracle数据库中DBMS_STATS常用方法(收集oracle数据库.索引.表等信息) –收集Oracle数据库信息命令 EXEC DBMS_STATS.gather_database_ ...

  3. oracle连续月份列表,Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析...

    Oracle实现查询2个日期所跨过的月份列表/日期列表的方法分析 本文实例讲述了Oracle实现查询2个日期所跨过的月份列表/日期列表的方法.分享给大家供大家参考,具体如下: 1.基本逻辑公式: Se ...

  4. oracle ora-各种常见java.sql.SQLException归结

    oracle ora-各种常见java.sql.SQLException归纳 java.sql.SQLException错误! ORA-00904:     --invalid column name ...

  5. Oracle查询某一天日期数据的SQL语句的几种写法

    本文章向大家介绍Oracle查询某一天日期数据的SQL语句的几种写法,主要包括Oracle查询某一天日期数据的SQL语句的几种写法使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值, ...

  6. oracle可以使用提交完成的事务,【体系结构】Oracle数据提交与事务隔离实验 oradebug挂起lgwr进程...

    Oracle数据提交与事务隔离实验 oradebug挂起lgwr进程 原文作者:dbsnake 崔华 实验参考原文链接: Oracle 里未 commit 的数据除了当前 session 之外,其他 ...

  7. Oracle的启动与停止(三个启动阶段和四种停库模式)

                                      Oracle的启动与停止(三个启动阶段和四种停库模式) 大家都知道Oracle数据库支持各种平台,比较常用的平台是windows8和 ...

  8. oracle的rac控制文件备份,RAC控制文件恢复(三种不同情况)

    RAC控制文件恢复(三种不同情况) 测试环境: 系统:LINUX-64 数据库:10.2.0.1 二节点的RAC(RACDB1,RACDB2),存储用的ASM 有备份情况下,丢失控制文件,我们改如何恢 ...

  9. ORACLE数据库 AWR报告收集

    知识点 AWR收集信息的详细程度受到STATISTICS_LEVEL参数的影响. STATISTICS_LEVEL参数的取值: BASIC:关闭awr统计计算和衍生值.只收集少量的数据库统计信息. T ...

最新文章

  1. Linux桌面版横评:十、Vector Linux 5.8 SOHO Final
  2. 使用PageHeap.EXE或GFlags.EXE检查内存越界错误 (转)
  3. IOS开发笔记2-C语言基础复习
  4. ideal中如何添加几个不同的项目在同一个idea页面显示(同一个窗口显示多个工程)...
  5. CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
  6. html怎么在图片上加文字_怎么把图片文字转换成word文档
  7. SSDB 配置文件详解
  8. NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎
  9. Python+Appium+夜神模拟器安装与简单运行(1/2)
  10. 客户端调用服务器端方法——ASP.NET AJAX(Atlas)、Anthem.NET和Ajax.NET Professional实现之小小比较[转]...
  11. openlayer4 加载arcgis rest 服务
  12. 完数(完备数、完美数)
  13. NE555延时电路设计
  14. 分享 野人老师-高级信息系统项目管理师-全部的课程资料
  15. 显示杂谈(7)-色坐标图的来源1
  16. android developer tiny share-20170603
  17. 杨令云玩过的那些FC游戏-魔道士的阴谋(二)
  18. ASP.NET MVC 上传文件方法
  19. 树形加法器(Brent-Kung加法器)
  20. GB码和BIG5码的互换技术-foxpro版-摘自csdn-faq

热门文章

  1. 11 Confluent_Kafka权威指南 第十一章:流计算
  2. NRF24L01的使用手册
  3. P84-前端基础动画效果-动画3D复仇者联盟练习
  4. JetBrains 在中国被频繁破解,官方是如何看待的
  5. 《opencv学习笔记》-- 亚像素角点检测
  6. 如何下载原生纯净的Windows系统?(MSDN)
  7. 我的有趣的英语学习经历
  8. 量子力学奇妙之旅-从相对论下薛定谔方程到量子场论
  9. 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
  10. java课程任务_修真院java后端工程师学习课程--任务1(day three)