Oracle 12c的一些新等待事件

编辑手记:本文介绍12C中一些新的等待事件,大家有更多发现或者总结的欢迎留言或者在大讲堂群交流讨论。

作者简介何剑敏 

Oracle ACS华南区售后团队,首席技术工程师。多年从事第一线的数据库运维工作,有丰富项目经验、维护经验和调优经验,专注于数据库的整体运维。

今天用swingbench加载数据的时候,发现了一些之前没有看过的等待事件,列举一下:

(1)LGWR worker group idle
这是因为12c默认是以adaptive方式启用scalable lgwr,即会在自动的在 single<-->scalable 之间进行切换,参考文章末尾的知识补充。
设置 alter system set “_use_single_log_writer”=true scope=spfile; 之后,即可恢复到12c之前的模式,从而不再有LGWR worker group idle等待。

(2)lreg timer
12c有一个新的进程LREG:
LREG (Listener Registration Process) Registers the instance with the listeners。在12c之前,是有pmon将数据库注册到listener中(动态注册,大约需要60秒的时间才会注册进去,除非alter system register)。

而在12c之后,将有lreg进程来做这个事情。当instance启动的时候,lrge进程会轮询listener是否已经启动,如果已经启动就将数据库的信息注册到listener中。如果listner还没有启动,轮询就会间隔大约每3000毫秒检查一次。strace的结果可以看到:epoll_wait(7, {}, 1024, 3000)

注:还会去读/proc/loadavg,猜测可能在资源消耗高的情况下,延缓注册database到listener:

也还会读/etc/hosts文件(所以如果hosts配置不正确,也会无法实现动态注册)

oracle把listener动态注册从pmon独立出来,让新进程lreg来做动态注册这个事情,我们可以看到:

1. 动态注册的时间短了,原来60秒,现在3秒
2. pmon减轻了压力,注册的事情有lreg进程来完成。

(3)heartbeat redo informer

官方文档的描述如下:

可以看到,原来在11g中,有arch进程来做dataguard的heartbeat检测,在12c中,也多出来TMON和TTnn进程来做dataguard之间的gap检测和心跳检测。

但是这个进程,不管是否启用dataguard,都会存在。当没有dataguard的时候,他就处于heartbeat redo informer这个空闲等待了

:TMON进程是Redo Transport Process monitor,是async模式下用来监控redolog和standby redolog之间的同步关系,TTnn是TMON派生出来的slave进程

参考:
New Idle Events are Erroneously Listed in STATSPACK Report (Doc ID 1998538.1)
New Background Processes In 12c (Doc ID 1625912.1)

补充知识

在12c之前的行为,LGWR主线程负责redo strand的读取,而由spawn出来的thread来模拟异步IO进行redo的写入,然后由main thread通知FG进程而结束log file sync的等待。(可以看到第0个lwp的CPU占据比其他几个lwp稍高。)

12c中有了scalable lgwr的功能,LGWR作为主进程做协调工作,具体的事情有slave进程LGnn来做。LGWR负责保证redo是按照顺序写入的,而slave LGnn根据LGWR的指示来进行redo strand的读取和redo的磁盘写入,并且由LGnn来直接通知FG进程写入完成而结束log file sync的等待。

1. lgwr的子进程lgnn,适用在多CPU的系统中,Oracle由参数_use_single_log_writer控制,(默认值是adaptive,另外还有true和false),当设置为默认值adaptive,会根据系统负载,自动的调节是single log writer还是scalable log writer。调节的时候,在lgwr的trace文件中可以看到:

2. LGnn的最多个数,有_max_outstanding_log_writes决定。


3. Dataguard的SYNC模式不能用到multiple LGWR属性

LGnn (Log Writer Worker) On multiprocessor systems, LGWR creates worker processes to improve the performance of writing to the redo log.
LGWR workers are not used when there is a SYNC standby destination. Possible processes include LG00-LG99.

参考:New Background Processes In 12c (Doc ID 1625912.1)

4. 存在 scheduling delay for the slaves。

在single instance中,high priority和highest priority都没有放LGWR;在RAC中,high priority中有放LGWR,但是没有LG*,可能会导致LGWR虽然有较高优先级,但是子进程没有较高优先级。所以,可能需要设置和lgwr一样priority的lgwr slave进程 。

参考Bug 20055279 : RAC PERF: LGWR CHOOSES TO USE SCALABLE LGWR BUT SINGLE LGWR PERFORMS BETTER


5. multiple LGWR适合多CPU的系统,特别是CPU高于64个以上的系统。

我个人猜测是一方面在scalable lgwr情况下,lgwr起到协调者的作用,协调的时候需要消耗CPU进行计算。另外一方面,多个子进程之间也需要CPU资源进行同步信息,以保证其写的顺序。

LGWR workers are used when using a single LGWR would perform better. This applies to small systems (<= 64 cpus).

参考Bug 20055279 : RAC PERF: LGWR CHOOSES TO USE SCALABLE LGWR BUT SINGLE LGWR PERFORMS BETTER 

6. LGnn进程之间会进行同步.

我想这也是为什么能保证写redo log的时候,保证其一致性的原因。有的时候,LGnn之间不必要的同步,会导致性能变慢。 This means there will be unneeded LGWR slaves in each group and we will incur intra group synchronization costs for these. 

参考 Bug 18683889 : SIGNIFICANT WAIT ON ''LGWR INTRA GROUP SYNC" WITH SCALABLE LGWR

7. 在AIX和HPIA环境中,启用scalable lgwr还可能导致数据库起不来,需要提前打好patch 21915719(注:打完patch 21915719之后,_use_single_log_writer=true就自动设置好了。) 

参考 ALERT: Bug 21915719 Database hang or may fail to OPEN in 12c IBM AIX or HPUX Itanium - ORA-742, DEADLOCK or ORA-600 [kcrfrgv_nextlwn_scn] ORA-600 [krr_process_read_error_2] (Doc ID 1957710.1) 

注意,这个文档已经变成ALERT类型,说明已经发生过比较多的问题。一般ALERT文档都是值得注意的预警性文档。

文章转自数据和云公众号,原文链接

时间: 2024-09-12 03:06:14

Oracle 12c的一些新等待事件的相关文章

Oracle 12C 数据泵新特性测试

1.1 数据泵新特性测试 1.1.1 数据导出工具expdp差异 The available keywords and their descriptions follow. Default values are listed within square brackets. ABORT_STEP Stop the job after it is initialized or at the indicated object. Valid values are -1 or N where N is z

Oracle OWI 等待事件历史视图及相关视图

    Oracle提供的等待事件视图使得我们可以获取指定session以及实例级别等待事件的详细信息,这些视图分别是v$session_wait,v$session_event,以及v$system_event.然而这几个视图对于历史等待事件无能为力.对此,Oracle也提供了历史等待事件视图v$session_wait_history,同时视图v$session_wait_class,v$system_wait_class也提供了基于等待类别的性能分析,下面是基于Oracle 10g对此展开

《Oracle数据库管理与维护实战》——1.3 Oracle 12c新特性

1.3 Oracle 12c新特性 Oracle数据库管理与维护实战 纵观甲骨文全球大会和甲骨文公司的各种资讯,我们可以发现云计算和大数据是两个重要的主题,Oracle 12c则融合了这两大主题.与以往的Oracle数据库相比,Oracle 12c在16个方面进行了更新.本节将详细介绍Oracle 12c数据库中的16个新特性. 1.3.1 支持多线程模式 在Oracle 12c中,Oracle引入了多线程模式,允许在Windows平台之外的UNIX.Linux等系统使用多线程模式.结合多进程与

软件大会分享PPT:面向开发和DBA的Oracle 12c新特性

在2016年12月10日的『中国软件大会上』,我分享了一个主题:<面向开发人员和DBA的Oracle 12c新特性>,从安全的主题开始,以在线变更为主线,分享了Oracle 12c的一些新特性,尤其是12.2的部分新特性. 在这个主题中,12.2 的 lockdown profile 成为我的出发点,通过这一新的安全机制,Oracle 12c 的PDB权限得以被限制,可以防范PDB的高权限操作对全局产生影响. 而在12.2中PDB的Clone,可以在线进行,这是较12.1的又一大进步: Ora

【等待事件】等待事件系列(1)--User I/O类型

[等待事件]等待事件系列(1)--User I/O类型 1  BLOG文档结构图     2  前言部分   2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ①  等待事件系列(1)--User I/O类型     Tips: ① 本文在ITpub(http://blog.itpub.net/26736162).博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaomaim

与IO相关的等待事件troubleshooting-系列5

'db file scattered read'         这是另一种常见的等待事件.他产生于Oracle从磁盘读取多个块到Buffer Cache中非连续("scattered")缓存的时候.这种读一次最大值是DB_FILE_MULTIBLOCK_READ_COUNT.这种典型场景像全表扫描(Full Table Scans)和全索引快速扫描(Fast Full Index scans).         如果这个等待事件占据大部分等待时间,下面的方法可以用到: 1. 找到执行

Oracle 12C优化器的巨大变化,上生产必读(下)

在Oracle 12c数据库中,随着新的查询优化自适应方法的引入,还有对可用的统计信息的强化,优化器实现了一个巨大的飞跃.今天就让我们继续这个话题,一起来揭晓Oracle 12C其他的强大功能吧. 16 全局临时表上的会话级统计信息  全局临时表通常用于存储应用程序上下文中的中间结果.一个全局临时表的定义,是全系统中拥有适当权限的所有用户所共享的,但其数据永远是会话私有的.在全局临时表(必须是会话级临时表,PRESERVE ROWS ON COMMIT,提交时保留数据)上收集统计信息是行得通的:

[参考文档] [翻译]Oracle 12c R2优化器白皮书

[参考文档] [翻译]Oracle 12c R2优化器白皮书 原文链接:http://www.oracle.com/technetwor ... edb-12c-1963236.pdf 第一版翻译链接:http://www.itpub.net/thread-1855401-1-1.html Oracle数据库12c第二版优化器 Oracle白皮书 2016年11月 序言 优化器是Oracle数据库最引人入胜的部件之一,因为它对每一个SQL语句的处理都必不可少.优化器为每个SQL语句确定最有效的执

In Memory—Oracle 12C重要新特性IMO详解

IMO,即In-Memory Option.为Oracle 12c中最为重要的新特性之一.12.1开始支持该新特性. 目录 基本介绍 可以启用In-Memory列存储功能的级别 适合使用IMO功能的操作类型 可以使用INMEMORY子句的命令 查询数据库中哪些segment启用了IM 不适合使用IM的操作 数据压缩 IM的存储设置 与IMO相关的初始化参数 在表,表空间,或者物化视图上启用IM 与IM相关的等待事件 与IM相关的统计信息 一.基本介绍 In-Memory列存储组件,为12c 中S