首页 > 其他分享 >归档日志碎片化

归档日志碎片化

时间:2023-11-03 13:31:36浏览次数:40  
标签:log buffer 碎片 256M 归档 日志 logfile redo strand

概念描述

oracle数据库根据每16个CPU分一股strand,每一股独立从log_buffer和redo logfile中分配一块空间,当其中一股log_buffer空间写满,会要求继续从redo logfile中分配一个空间,如果没有剩余空间可以用,则redo会发生切换。所以log_buffer设置不当也会是引起日志切换过快,并且归档日志碎片化的原因。

详情解释

log_buffer和redo logfile存在以下3种情况
1、log buffer大于redo logfile
如果log buffer是1G,redo logfile是512M,如果oracle的cpu_count是64,那么刚好可以分成4个strand,即log buffer可以分成4个256M的strand,redo logfile分成4个128M的strand,当log buffer中第一个256M还没写完的时候会发现redo中已经没有可以分配的新的空间了,此时写满128M就无法分配新的空间了,只能进行切换,假设此时只有1个进程在写redo,那么切换时就只写了128M数据,此时归档日志只有128M。

2、log buffer等于redo logfile
如果log buffer是1G,redo logfile也是1G,如果oracle的cpu_count是64,那么刚好可以分成4个strand,即log buffer可以分成4个256M的strand,redo logfile也分成4个256M的strand,当log buffer中第一个256M写完的时候会发现redo的第一个strand同时也写了256M,此时需要分配新的空间,但是因为redo log刚好分配了4个256M空间,已经无法分配新的空间了,只能进行切换,假设此时只有1个进程在写redo,那么切换时就只写了256M数据,此时归档日志只有256M。

2、log buffer小于redo logfile
如果log buffer是512M,redo logfile也是1G,如果oracle的cpu_count是64,那么刚好可以分成4个strand,即log buffer可以分成4个128M的strand,redo logfile也先分成4个128M的strand,剩余的512M空间暂时不动,用于后续分配。当log buffer中第一个128M写完的时候会发现redo的第一个strand同时也写了128M,此时需要分配新的空间,redo log于是将剩下的空间再开辟一个128M的strand进行数据写入,故无需切换即可继续写入数据,所以当最后实在是没有空间可以划分的时候再进行切换,归档日志可以近似redo log大小。

知识总结

以上只是我们假设的只有1个进程写入redo的情况,实际上我们写入数据时肯定是并行写数据的,即我们实例中的4个strand都在同时写数据,只会存在分别写多写少的情况。所以实际情况中,我们建议log_buffer不要设置过大,建议小于redo log的大小,不然出现归档日志碎片化的概率会非常高

参考文档

一个LOG_BUFFER设置过大导致的日志切换问题
https://www.modb.pro/db/49823


标签:log,buffer,碎片,256M,归档,日志,logfile,redo,strand
From: https://blog.51cto.com/u_13482808/8165157

相关文章

  • VS2015 日志
    VA选项颜色与属性 “以斜体显示系统符号”高亮 引用和光标下所有语言-常规-自动大括号完成(&B)取消停靠窗口时崩溃devenv.exe主进程的同目录下的devenv.exe.config文件修改,需改节点AppContextSwitchOverrides添加值;Switch.System.Windows.Interop.MouseInput.O......
  • 日志数据如何同步到MaxCompute
    https://developer.aliyun.com/article/727331摘要:日常工作中,企业需要将通过ECS、容器、移动端、开源软件、网站服务、JS等接入的实时日志数据进行应用开发。包括对日志实时查询与分析、采集与消费、数据清洗与流计算、数据仓库对接等场景。本次分享主要介绍日志数据如何同步到M......
  • 大学生创新训练项目开发日志 (10-26 ~ 11-2)
    进展资源钩取我们通过如下方法对资源钩取模块进行了改进:对getDrawable()返回的Drawable实例进行了进一步处理,降低被丢弃的资源的比率。通过LayoutInflater.inflate()返回的ImageView实例的getDrawable()方法获取该实例内含的Drawable资源。进行了如下改进后,对......
  • sql server 截断和收缩所有用户数据库日志--用游标循环所有正常状态的用户数据库
    在服务器运维活动中,我们经常需要做一项工具就是将好多年的用户数据库日志文件截断并收缩为最小,以节省大量的磁盘空间。当数据库只有一两个时可以手动操作,但数据库数量众多时,就需要采用sql脚本,批量化执行这个过程。本人写了一段这样的脚本。并且经过验证执行无误。现在分享出来,您......
  • 2023.11 模拟赛日志
    目录SS231101(20231101)标记*是将要写或研究的题目,%就是摆烂,ok的话也许是想到了不想写的意思,没有其他标记就是过了;一个中括号括起来的题目名称就是没写题解,反之是有题解。SS231101(20231101)陈浩霆round。[A动态规划]神秘跳棋题(A014225)[B线段树]简单动态min(维护\(x,......
  • Allure企业级报告定制化自定义logo,中文标题,模块名,用例名,用例详细的测试数据如用例日志
    【自定义logo】进入Allure的安装路径,找到config目录。在config目录下,找到allure.yml文件,并打开该文件。在allure.yml文件中,添加custom-logo-plugin选项。进入Allure的安装路径,找到plugins目录下的custom-logo-plugin目录。在custom-logo-plugin目录下,找到static目录,并将自己需要展......
  • docker收集日志到es并展示
    1、安装es注意:关闭xpack.security.enabled:false权限认证允许跨域http.cors.enabled:truehttp.cors.allow-origin:"*https://blog.csdn.net/qq_40739917/article/details/131654563dockerrun--nameelasticsearch-p9200:9200-p9300:9300-e......
  • Nginx 安全日志分析可视化
    之前介绍过ModSecurity这款优秀的开源WAF,它是一个入侵检测与阻止的引擎,原本是Apache的一个模块,现在可作为单独模块编译添加到Nginx服务中虽然这款WAF很优秀,但是使用起来并没有那么容易,之前也整理了文章介绍它的原理和规则,然而还有一个问题,就是它的日志分析,之前介绍原理规则......
  • 如何做 Nginx 安全日志分析可视化,看完这一篇,秒懂!
    之前介绍过ModSecurity这款优秀的开源WAF,它是一个入侵检测与阻止的引擎,原本是Apache的一个模块,现在可作为单独模块编译添加到Nginx服务中虽然这款WAF很优秀,但是使用起来并没有那么容易,之前也整理了文章介绍它的原理和规则,然而还有一个问题,就是它的日志分析,之前介绍原理规则......
  • [Azure Developer]把Azure Function中ILogger对象静态化为静态方法提供日志记录
    问题描述在AzureFunction代码中,有默认的ILogger对象来记录函数的日志,如果函数引用了一些静态对象,是否有办法使用这个默认的ILogger对象来记录日志呢?usingSystem.Net;usingMicrosoft.Azure.Functions.Worker;usingMicrosoft.Azure.Functions.Worker.Http;usingMicrosoft.Ext......