AWR前5名定时活动 - 前10名

AWR前5名定时活动 - 前10名
五大计时事件
 
当您尝试消除系统瓶颈时,您的AWR报告的“五大定时事件”部分将是首选。报告的这一部分显示了前5个定时事件,等待事件的完整列表和后台等待事件。
 
以下是等待事件最常见的10个原因,以及解释和潜在解决方案:
 
1.DB File Scattered Read
 DB文件分散读取。这通常表示与全表扫描有关的等待。当全表扫描被拉入内存时,它们很少落入连续的缓冲区,而是分散在缓冲区高速缓存中。这里的大数字表示您的表可能缺少或抑制了索引。尽管执行全表扫描可能比索引扫描更有效,但请确保在看到这些等待时需要完整的表扫描。尝试缓存小表以避免一遍又一遍地读取它们,因为在LRU(最近最少使用的)列表的冷端放置全表扫描。
 
2. DB File Sequential Read
DB文件顺序读取。该事件通常表示单个块读取(例如,读取索引)。这里的大量等待可能表示表的糟糕订单,或非选择性索引。对于高交易,调优的系统,这个数字是很大的,但是在某些情况下可能会显示出问题。您应该将此等待统计信息与Statspack报告中的其他已知问题相关联,例如低效SQL。检查以确保索引扫描是必需的,并检查多个表连接的连接顺序。DB_CACHE_SIZE也将成为这些等待出现频率的决定性因素。有问题的散列区域连接应该显示在PGA内存中,但它们也是可能导致连续读取的高等待数的内存数据。它们也可以显示为直接路径读/写等待。这些情况通常是相互关联的。当它们与“前5个等待事件”部分中的db文件分散读取和数据库文件顺序读取的外观一起出现时,首先应检查报告中的“物理读取的SQL”部分,以查看它是否有帮助调整资源使用率最高的语句。然后,要确定是否存在潜在的I / O瓶颈,检查相应症状的OS I / O统计信息。还要查看报表的Tablespace和File I / O部分中每次读取的平均时间。如果许多I / O相关事件在“等待事件”列表中显示为高电平,请重新检查主机硬件是否存在磁盘瓶颈,并检查主机 - 硬件统计信息,以显示磁盘重新配置可能会受益。
 
3. Free Buffer
自由缓冲液。这表示您的系统正在等待内存中的缓冲区,因为目前没有可用的缓冲区。此类别中的等待可能表示您需要增加DB_BUFFER_CACHE,如果所有的SQL都被调整。自由缓冲区等待也可以指示非选择性SQL导致数据使用索引块洪泛缓冲区高速缓存,这对于等待系统处理的特定语句没有任何影响。这通常表示存在大量的DML(插入/更新/删除),数据库写入程序(DBWR)的写入速度不够快; 缓冲区高速缓存可以充满相同缓冲区的多个版本,导致很低的效率。为了解决这个问题,您可能需要考虑加速增量检查点,使用更多的DBWR进程或增加物理磁盘的数量。要调查这是否是I / O问题,请查看statspack文件I / O Statistics。
 
4. Buffer Busy
缓冲区忙。这是等待正在以不可靠的方式使用或被读入缓冲区高速缓存的缓冲区。缓冲区繁忙等待不应大于1%。检查缓冲区等待统计部分(或V $ WAITSTAT)以了解等待是否在段头上。如果是这样的话,增加自由职业者群体或增加自由职业者的差距。如果等待是在一个撤消标题,你可以解决这个添加回滚段; 如果它是在一个撤消块,你需要减少表上的数据密度驱动这一致的读取或增加DB_CACHE_SIZE。如果等待在数据块上,则可以将数据移动到另一个块以避免此热块,增加表上的freelists,或使用本地托管表空间(LMT)。如果它在索引块上,则应重建索引,分区索引或使用反向索引。为了防止与数据块相关的缓冲区忙等待,您还可以使用较小的块大小:在这种情况下,较少的记录落在单个块​​内,因此它不是“热”。当发生DML(插入/更新/删除)时,Oracle数据库将信息写入块中,包括在块状态下“感兴趣”的所有用户(有意交易清单,ITL)。为了减少此区域的等待,您可以增加initrans,这将创建块中的空间以允许多个ITL插槽。您还可以增加此块存在的表上的pctfree(当没有足够的插槽使用指定的initrans构建时,将ITL信息写入maxtrans指定的数字)。
 
5.Latch Free
无锁。锁存器是用于保护系统全局区域(SGA)中的共享存储器结构的低级排队机制(它们被准确称为互斥机制)。锁存器就像内存上的锁,非常快速地获得和释放。锁存器用于防止并发访问共享内存结构。如果闩锁不可用,则记录无闩锁错过。大多数锁定问题与使用绑定变量(库缓存锁存器),重做生成问题(重做分配锁存器),缓冲区高速缓存争用问题(缓存缓冲区LRU链)和缓冲区缓存(缓存缓存链)中的热块相关) 。还有与bug有关的锁定等待; 如果您怀疑是这种情况(oracle.com/support),请检查MetaLink是否有错误报告。当锁存错误率大于0.5%时,您应该调查问题。我将在下一个Oracle杂志栏中详细介绍锁定等待; 该主题本身就需要一篇文章。如果锁定空闲等待处于前5个等待事件或完整等待事件列表中的高位,请查看Statspack报告中的特定于锁存器的部分,以查看哪个锁存器被争用。
 
6。Enqueue
入队。入队是一种保护共享资源的锁。锁保护共享资源,例如记录中的数据,以防止两个人同时更新相同的数据。排队包括一个排队机制,它是FIFO(先进先出)。请注意,Oracle的锁存机制不是FIFO。入队等待通常指向ST队列,HW入队,TX4入队和TM队列。ST入队用于字典管理的表空间的空间管理和分配。使用LMTs,或尝试预先分配盘区,或至少使下一个盘区更大的有问题的字典管理的表空间。HW排队与段的高水位标记一起使用; 手动分配盘区可以绕过这个等待。TX4是最常见的入队等待。TX4入队等待通常是三个问题之一的结果。第一个问题是重复的唯一索引; 您需要提交/回滚以释放入库。第二个是同一位图索引片段的多个更新。由于单个位图片段可能包含多个rowid,您需要发出提交或回滚以释放多个用户尝试更新相同片段时的入队。第三个也是最可能的问题是当多个用户更新相同的块时。如果没有空闲的ITL插槽,则可能会发生块级锁定。您可以通过增加initrans和/或maxtrans来容易地避免这种情况,以允许多个ITL插槽和/或通过增加表上的pctfree。最后,在DML中发生TM入队,以防DDL受影响的对象。如果你有外键,请确保对其进行索引,以避免此一般的锁定问题。
 
7. Log Buffer Space
日志缓冲空间。发生这种等待是因为您写的日志缓冲区比LGWR写入重做日志更快,或者因为日志开关太慢。要解决此问题,请增加日志文件的大小,或者增加日志缓冲区的大小,或者获取更快的写入磁盘。您甚至可以考虑使用固态磁盘,因为它们的速度很快。
 
8. Log File Switch
日志文件切换。所有提交请求正在等待“日志文件切换(需要归档)”或“日志文件切换(不完整)”。确保存档磁盘未满或缓慢。由于I / O,DBWR可能太慢。您可能需要添加更多或更大的重做日志,如果DBWR是问题,您可能需要添加数据库写入程序。
 
9. Log File Sync
日志文件同步。当用户提交或回滚数据时,LGWR将会话的重做从日志缓冲区刷新到重做日志。日志文件同步过程必须等待此成功完成。为了减少这里的等待事件,尝试提交更多的记录(例如,尝试一次提交一批50个而不是一个)。将重做日志放在更快的磁盘上,或者在不同物理磁盘上备份重做日志,以减少对LGWR的归档影响。不要使用RAID 5,因为写入很多的应用程序非常慢; 可能考虑使用文件系统直接I / O或原始设备,这在编写信息时非常快。
 
10. Idle Event
空闲事件。输出后列出几个空闲等待事件; 你可以忽略它们。空闲事件通常列在每个部分的底部,并包括诸如SQL * Net消息到/从客户端和其他背景相关的定时。空闲事件列在stats $ idle_event表中。
posted @ 2017-06-27 14:35  披着凉皮的狼  阅读(160)  评论(0编辑  收藏  举报