RAID,即廉价磁盘冗余阵列,是一种将相同的数据放在多个硬盘上不同位置的方法。RAID有很多不同的类型(叫做RAID“级”),每种类型都有其相对的优势和劣势。
对于Oracle9i的数据库而言,很多RAID方案都不具备Oracle数据库所要求的高性能。大多数Oracle的专家都会选择一种结合了镜像(mirroring)和数据块分段(block-level striping)的RAID方案。
要注意的是,使用RAID并不能防止磁盘灾难性的故障,这一点极其重要。Oracle专门推荐将所有的付诸使用的数据库都运行在ARCHIVELOG模式下,而不去考虑RAID的架构。Oracle还建议定期进行Oracle的备份。
要记住,I/O子系统由很多组件组成——包括控制器、通道、磁盘适配器,以及SCSI适配器——这些组件中的任何一者发生崩溃都会导致你数据库无法挽回的磁盘错误。现在让我们来看看Oracle数据库最常用的RAID架构吧。
RAID 0
RAID 0通常指的是数据块的分段技术,它是在磁盘设备上实现Oracle数据库负载平衡的卓越方法,但是由于它没有提供数据的备份,因而完全无法提供高可用性。和手动的数据文件分段(你要手动将Oracle的表格空间分割放进小的数据文件里)不一样,Oracle会利用RAID 0自动地将一个数据块进行分段并一次放进所有的磁盘设备里。在这种方式下,每个数据文件在每个磁盘上都存有其一部分内容,这样磁盘I/O的负载会变得非常平衡。
RAID 1
RAID 1也叫做磁盘镜像。由于磁盘都是被相互复制,所以RAID 1可以做成双重或者三重镜像。根据RAID 1架构的设计,如果一个磁盘发生错误,那么I/O子系统就会自动切换到各个复制磁盘中的一个上,而不需要中断服务。Oracle的专家会在要求高可用性的时候使用RAID 1。对于三重镜像而言,Oracle数据库的平均无故障时间(mean time to failure,MTTF)可以长达数十年。
RAID 0+1(RAID 10)
RAID 0+1是数据块分段和磁盘镜像的组合。RAID 0+1一出现就淘汰了Oracle这一层的分段技术,因为RAID 0+1的分段是在数据块这一层的,它分配表格块的方式是:每个磁盘上一个数据块,跨越每个磁盘设备。
RAID 0+1也是一个远比(单纯的)分段技术好得多的替代方案,因为它将负载平均地分配到所有的磁盘设备上,也就是说负载的上升和降低都被平均地分配到了所有的磁盘上。这就减轻了Oracle系统管理员在各个磁盘上手动地进行Oracle表格分段的负担。
RAID 5
有些更新的基于硬件的RAID 5存储方案极其适合于作为数据仓库。RAID 5是打造Oracle数据仓库的好方法,因为在这里负载的速度不是很重要,而且系统I/O的主要职责在于只读的活动。