静默错误:Oracle数据库是怎样应对和处理赏罚的 ?
在 Google 上,可以或许找到一些与『静默错误』相干的文献,因为这里不能链接,我同一放在下载中,各人可以自行下载进修:
颠末许多研究表白,『静默错误』真实存在,而且不只仅是磁盘驱动器的缘故起因,在某些环境下,电源电缆、HBA卡、有BUG的驱动措施或微码也会导致静默破坏。 在 Oracle 官网上有一篇 2013 年的文章:How to Prevent Silent Data Corruption,这篇文章的两位作者一个是 Oracle Enterprise Linux 的内核开拓者,其它一位来自 Emulex - 光纤卡厂商。 文章这样描写静默破坏: 静默破坏是在没有告诫的环境下产生,可以界说为因为组件妨碍或有时的打点操纵而导致的非恶意数据丢失。读取或写入无效数据时并不提醒I/O题目,最终导致数据破坏。 这种范例的破坏是迄今为止最具劫难性的,而且没有有用的要领来检测。 凡是环境下,担保数据同等性的 ECC 和 CRC 技能可用于大大都处事器,存储阵列和HBA。 可是这些搜查仅在单个组件内姑且掩护数据,无法确保写入的数据在从应用措施传输到HBA,互换机,存储阵列和物理磁盘驱动器的数据路径中不会破坏。 产生数据破坏时,大大都应用措施都不知道存储在磁盘上的数据不是要存储的数据。 在已往几年中,EMC,Emulex和Oracle配合相助敦促并实验了T10 SBC尺度的附件信息掩护成果,该成果可以在数据通过数据路径时对数据举办验证,以确保数据阻止静默破坏的产生。 最终方针是通过建设完备性元数据(也称为掩护信息,与数据同时建设),然后在整个数据路径中验证元数据,并将错误回馈给应用措施举办修复,从而提供针对从应用措施到磁盘的静瘳数据破坏的掩护。下图就是这个链路的掩护进程: 写入数据时会产生以下步调: 第一:Oracle自动存储打点库在写入内存时为每个512字节扇区添加掩护信息。 第二:掩护信息附加到 I / O哀求,并通过Oracle Linux操纵体系内核中的层转达给Emulex驱动措施。 第三:Emulex LightPulse Lpe16000B光纤通道HBA从内存缓冲区网络信息,验证数据完备性,归并数据和掩护信息,然后按照T10 PI模子发送520字节扇区。 第四:EMC VMAX阵列固件验证掩护信息并将数据写入磁盘。 第五:磁盘驱动器固件在将数据提交到物理介质之前验证掩护信息。 读取数据时,步调反向完成。 在2013年这篇文章提到,在基于 OEL 和 Emulex 的设置下,加强可以被启用以防御数据丧失: 这是多方全力的功效,在 oracleasm-discover 中可以调查到相干信息:
进一步的睁开一下,看看Oracle的加强同等性搜查实现。在伟大的数据流转进程中,每一个步调都也许发生数据分歧: 在典范的 I/O 处理赏罚栈中,最后在存储和驱动器层, 8 Byte 的 PI 校验位才被增进进去,而存储呈现静默错误题目时,顶层是无法感知的。 T10 的掩护信息模子,就是增进特殊 8 字节的校验位,从应用到HBA再到底层存储,层层校验掩护: 在最高的 T10 PI 掩护级别上,校验位从应用层就开始被添加,实现了端到端的校验: 在 Oracle 10g年月,Oracle 曾经推出 H.A.R.D. 打算,全程是 - Hardware Assisted Resilient Data ,被翻译为 硬件帮助弹性数据(HARD)打算,用于防备数据破坏。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |