【中亦安图】关于数据库文件损坏风险的提醒(3)

简介:   第一章 技术人生系列 · 我和数据中心的故事(第三期)-中亦科技关于数据库文件损坏风险的提醒 中亦安图 | 2016-01-19 21:38 前言 小y最近处理了几起Oracle数据库文件损坏的case,因为某些Bug风险较大,因此不敢有丝毫怠慢,赶紧拿出来分享!希望能够帮助到有需要的朋友!风险提示! 如上图所示,Linux 5/6上的一个已知缺陷,在某些触发条件下,将导致Oracle数据文件出现内容全是0的的坏块。

 

第一章 技术人生系列 · 我和数据中心的故事(第三期)-中亦科技关于数据库文件损坏风险的提醒

中亦安图 | 2016-01-19 21:38

前言

小y最近处理了几起Oracle数据库文件损坏的case,因为某些Bug风险较大,因此不敢有丝毫怠慢,赶紧拿出来分享!希望能够帮助到有需要的朋友!风险提示!

wps9234.tmp

如上图所示,Linux 5/6上的一个已知缺陷,在某些触发条件下,将导致Oracle数据文件出现内容全是0的的坏块。该操作系统上的缺陷,除了会导致Oracle数据库数据文件损坏外,还会导致包括归档日志、在线日志的损坏。而如果是current状态的在线日志发生损坏,那么对于数据库的影响将是致命的。需要引起重视!

BUG触发条件:

当同时满足下列条件下时,会触发一个Linux上的已知缺陷,导致数据库数据文件或归档文件或在线日志文件的损坏:

1、 操作系统为Linux,版本为Redhat 5/6 或Oralce Linux 5/6

2、 数据文件/归档日志/在线日志所在的文件系统采用ext4

3、 数据库参数filesystemio_options=SETALL(为了提升IO性能而设置)

4、 数据库版本从10g到12c

如何修复?

1、临时的,可以通过修改数据库参数来绕开该BUG

filesystemio_options=none或

filesystemio_options=ASYNCH或

filesystemio_options=DIRECTIO

2、进一步的,建议尽快修复Linux操作系统的缺陷

对于Redhat 5

在kernel-2.6.18-238.el5 - RHEL5.6 Errata RHSA-2011-0017 或更高的版本中修复

对于Redhat 6

在kernel-2.6.32-71 或更高的kernel版本中修复

更多内容,可以参考My Oracle Support,参考文档号1487957.1:

ORA-1578 ORA-353 ORA-19599 Corrupt blocks with zeros when filesystemio_options=SETALL on ext4 file system using Linux (Doc ID 1487957.1)

小y已经好几次处理该类型的case,接下来看一个最近的一个CASE。

相关案例分享

小y不是个懂得生活的人,故障处理、性能调优等工作占据了小y的全部生活,剩下的时间就是在补觉(好无趣的人啊)。小y也曾幻想走出门,多交些朋友。但小y不善言谈,帮助他人解决问题就是小y交朋友的典型方式。

最近在微信里,看到jeanron杨建荣的Oracle公众号发表了一篇名为<最近让我焦灼的四个问题>的文章。其中第一个问题就是dataGuard备库老报坏块的问题。报错如下所示

wps9244.tmp

对于这个问题,jeanron已经分析了各种场景,前前后后做了不下十多种测试,基本都排除了,重建了多次,问题还是没能解决。

看完该文章的时候,结合过去所处理的case,小y已经基本上可以断定:

Jeanron很不幸,他遇到了文章一开始我们所提到的Bug了!

虽然和jeanron不熟,但帮助人和交朋友是小y现在很乐意做的事情。

于是小y私信了他,告诉他可能遇到操作系统的Bug了,并让他做了以下检查,很幸运的,小y又一次猜对了。

1、检查操作系统版本

wps9245.tmp

检查结果,满足bug的触发条件Redhat 5.3

2、检查kernel版本:

wps9246.tmp

检查结果,Linux的该Bug在kernel-2.6.18-238.el5以下会触发,

而该Kernel版本为2.6.18-194,满足Bug触发条件

3、检查数据库文件存放的目录:

wps9257.tmp

检查结果,数据库文件存放在/home目录下,该目录是ext4文件系统,满足Bug触发条件

4、检查filesystemio_options参数:

wps9258.tmp

检查结果,数据库参数filesystemio_options为SETALL,即同时支持异步IO和DIRECT IO,,满足Bug触发条件。

5、结论和结果

可以看到,所有触发条件全部满足,至此可以确认命中一开始提到的Linux BUG了。

在调整filesystemio_options=NONE后,jeanron确认问题得到最终解决。

小y很开心,除了解决问题带来的成就感之外,

自己的经验可以帮到客户、帮到朋友,还可以交到朋友,

那不就是小y的追求么!

 

 

About Me

....................................................................................................................................................

本文来自于微信公众号转载文章,若有侵权,请联系小麦苗及时删除

ITPUB BLOGhttp://blog.itpub.net/26736162

QQ642808185 若加QQ请注明您所正在读的文章标题

【版权所有,文章允许转载,但须以链接方式注明源地址,否则追究法律责任】

....................................................................................................................................................

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
Kubernetes 关系型数据库 MySQL
ChaosBlade常见问题之数据库进行故障注入报错ibdata1文件异常如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
27 1
|
2月前
|
监控 关系型数据库 数据库
OceanBase数据库常见问题之文件存在但是数据库提示文件不存在如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
2月前
|
XML 关系型数据库 MySQL
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
【Mysql】有关数据库中一对多/一对一,多对一xml中文件映射问题
19 0
|
1月前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
1月前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
2月前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
20 0
|
5月前
|
存储 JSON 关系型数据库
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
67 0
|
2天前
|
存储 数据库
LabVIEW如何修复或重置NI MAX数据库文件
LabVIEW如何修复或重置NI MAX数据库文件
|
4天前
|
存储 监控 容灾
关系型数据库的单点故障风险
关系型数据库的单点故障风险
25 6
|
4天前
|
SQL 存储 小程序
数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例
数据库数据恢复环境: 5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个逻辑分区。 数据库故障: 数据库文件丢失,主要涉及3个数据库,数千张表。数据库文件丢失原因未知,不能确定丢失的数据库文件的存放位置。数据库文件丢失后,服务器仍处于开机状态,所幸未写入大量数据。
数据库数据恢复—Sql Server数据库文件丢失的数据恢复案例