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 —
对不起,这篇文章暂时关闭评论。