博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Buffer cache spillover: only buffers
阅读量:6655 次
发布时间:2019-06-25

本文共 1143 字,大约阅读时间需要 3 分钟。

在启动数据库 (指database open)时若需要recovery的redo较多,涉及到的数据块多时可能会看到以下信息: > Buffer cache spillover: only 32768 of 117227 buffers available$   这是由于crash recovery的redo apply本身需要用到buffer cache,此时buffer cache被称作recovery buffer。 一旦分配了recovery buffer,其将不会被释放或age out直到所有数据块的redo change都被应用并写入到磁盘。   由于只有一个实例可以参与recovery(不管是crash recovery还是instance recovery),恢复实例的buffer cache 大小将会是大规模恢复数据文件(recovery)的限制。 在锁声明阶段(lock claim phase),若实例耗尽了空余的buffer cache 则会spillover溢出到磁盘上(有点像swap)并必须予以处理。此时锁声明会暂时中止,oracle会先应用日志将redo change应用到哪些已经声明过的buffer cache中。直到所有这些recovery buffer都被恢复并被写出,此时它们才变得对下一次后续的锁声明可用。 由于以上说明的磁盘溢出恢复(spillover recovery)持续多次锁声明和日志应用阶段(理想的是一次锁声明,一次日志应用即完成redo apply),直到本次完整的恢复完成。 需要注意的是,以上crash recovery的算法在 buffer cache很小的情况下性能较差; 常见的例子是这样的, 在产品数据库中由于有着较大buffer cache而不会遇到该问题,而在某些基于存储或卷管理软件实现的复制、测试环境中,由于需要恢复的数据集合较大而且往往db_cache_size比产品库小很多,所以alter database open时往往看到该(Buffer cache spillover: only 32768 of 117227 buffers available$),且打开数据库耗费比产品库更多的时间。   我们一般不用担心buffer cache spillover,因为即便速度缓慢在10分钟内数据库往往还是能够打开的,但是如果你监控着alert.log 30分钟都没有任何新日志,那么可能是spillover导致的hang,如果遇到该问题请去OTN Ask Maclean  

本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278453

转载地址:http://ghxto.baihongyu.com/

你可能感兴趣的文章
Mysql主从架构-主库宕机如何恢复业务
查看>>
spring cloud构建互联网分布式微服务云平台-断路器聚合监控(Hystrix Turbine)
查看>>
Python爬虫学习必备知识点:正则表达式模块详解
查看>>
基于 Kubernetes 实践弹性的 CI/CD 系统
查看>>
也谈拼多多被薅羊毛事件
查看>>
JEESZ分布式框架开发环境部署
查看>>
SNMP for LVS
查看>>
性能日志和警报设置开机自动启动logman
查看>>
负载均衡的基本(常用)算法
查看>>
10g的scott账户解锁
查看>>
Linux性能优化和监控系列(三)——分析Memory使用状况
查看>>
I盘显示无法访问数据错误(循环冗余检查),里面的资料怎么恢复
查看>>
PHP、MySQL和JavaScript学习手册笔记(二)
查看>>
我的友情链接
查看>>
J2EE 排序算法(一)
查看>>
PATH、cp命令、mv、文档查看命令
查看>>
android app 用什么语言开发的
查看>>
struts2.0中struts.xml配置文件详解
查看>>
Java内部类和匿名类
查看>>
nv sdk: transparency with multisampling笔记
查看>>