首页 » ORACLE 9i-23c » oracle 12c后 ‘日志文件分段’可能导致LGWR slow 等待’log file sync’

oracle 12c后 ‘日志文件分段’可能导致LGWR slow 等待’log file sync’

在我的blog之前记录过《Oracle 19c新特性: Listener自动清理(Network Log File Segmentation)》Oracle在listener日志(XML)自动清理或logratate的功能, listerner log过大可能导致filesystem busy或创建新连接slow, 在oracle中还有重要的日志db alert log(XML),12c 引入了log segment功能,针对xml格式的alert log达到某大小后自动生成新文件,解决日志过大查看和监控采集的问题,我在很多年前专门写过listener log和alert log的text格式的shell用于切换,Log writer(LGWR)进程在switch时会写db alert log, 如果在写日志时有性能问题有可能会导致LGWR进程性能问题,导致实例出现等待log file sync。

db alert log通常内容仅写启动 和log file switch,ORA- 日志增长较小,但是近两年国产化有些库配置了基于logminer的日志解析同步工具,导致alert日志增长过快log file频繁的XML文件分段。而在分段时会在db alert log text文件中dump数据库banner,非默认参数,安装的RU或one-off patch信息, 该信息过大会加剧日志分段时的时长出现该问题。

ALERT 日志分段路径:

select value from v$diag_info where  name=' Diag Alert'

触发场景
*)因数据库启动了logminer等导致db alert log中转出增长频繁
*)db alert log有两种格式:text和xml, xml文件因为日志分段特性当达到一定大小(10M时),自动创建新的log.xml,旧的文件重命名为log_N.xml
*)在xml自动分段的同时会在db alert log text格式文件中输出数据库的参数和补丁信息
*)而数据库安装了多次RU或大量patch,输出内容更多,日志分段时间变长
*)可能影响LGWR此时输出日志切换信息处于ON CPU,堵塞FG进程等待log file sync.
*)仅当系统由于某种原因生成大量日志消息时,该行为才可能成为问题。

修改建议

问题一,在db alert log  text(alert.log)中经常随机性的看到一些数据库输出banner, system parameters, 当前的安装的补丁信息的原因, 在oracle 11g版本和之前版本alert log 不会出现,只有在实例启动时才输出,如果不知道原因很可能还会担心数据库重启,但前后没有实例启动的信息,我们不需要实际操作,数据库没有任何问题。

问题二,实例出现了log file sync同时在做alert log 分段时,对性能响应延迟敏感,此时建议禁用aler log中的输出信息观察。有如下参数:

       NUM N_HEX    NAME                                                     VALUE                          DESCRIPTION
---------- -------- -------------------------------------------------------- ------------------------------ ---------------------------------------------------------------------------------------------------
      5095  13E7    _log_segment_dump_parameter                              TRUE                           Dump KSP on Log Segmentation
      5096  13E8    _log_segment_dump_patch                                  TRUE                           Dump Patchinfo on Log Segmentation

默认为true, 禁用调整参数为false.

alter system set "_log_segment_dump_parameter"=false;
alter system set "_log_segment_dump_patch"=false;

对于日志大小10M的限制,在23c前没有参数控制,在23C中引入了新的参数_alert_segment_size, 默认大小也变成了50M.

       NUM N_HEX NAME                                                     VALUE                          DESCRIPTION
---------- ----- -------------------------------------------------------- ------------------------------ ---------------------------------------------------------------------------------------------------
      6043  179B _log_segment_dump_parameter                              TRUE                           Dump KSP on Log Segmentation
      6044  179C _log_segment_dump_patch                                  TRUE                           Dump Patchinfo on Log Segmentation
      6045  179D _alert_segment_size                                      50                             Alert-log segment size in MBs (1024*1024)
      6578  19B2 _hcs_log_segment_size                                    10                             HCS log segment size in MB
      6579  19B3 _hcs_log_max_segments                                    1000                           maximum number of HCS log segments, 0 for unlimited

— over , I hope I have help for you —

打赏

, ,

目前这篇文章还没有评论(Rss)

我要评论