天天看点

ASM 翻译系列第三弹:基础知识 About ASM disk groups, disks and files

oracle asm使用磁盘组来存放数据文件,每一个asm的磁盘组由一些asm磁盘组成,每一个asm磁盘组本身是一个独立的存储单元,是自描述的,对于asm磁盘组中数据库文件,asm提供一个文件系统的接口,方便dba做管理。存放在asm磁盘组中的文件被均匀的分布在磁盘组中的所有磁盘上,通过这种方式,每一块磁盘都可以提供一致的性能,同时asm的性能可以比得上裸设备的性能。【摘录自11gr2版本的asm官方文档】

一个asm磁盘组是由一个或多个asm磁盘组成的,每个asm磁盘组也是自包含的,有它自己的asm元数据,这些元数据由asm实例进行维护和管理。

一般情况下asm只需要有非常少的磁盘组就可以了,在asm 11.2版本之前,两个磁盘组一般就足够了,一个用来存放数据文件,另一个存放备份/归档日志文件,在11.2版本,你可能还想单独创建一个磁盘组存放asm的spfile,ocr和voting盘,当然前提是你计划把这些文件存放到asm中。

asm使用到的磁盘,需要提前由os/存储管理工程师安装、配置好,这些盘可以是本地的物理设备(ide, sata, scsi,等等),也可以是基于san网络输出的luns(iscsi, fc, fcoe, 等等),也可以是通过nas/nfs网络输出的盘。建议给asm使用的盘都做分区,即使是计划把一整个盘提供给asm使用,也建议做成一个单一的分区。

在exadata环境下,asm会使用通过libcell接口创建的grid disk,这些盘来自于exadata的存储节点。

asm磁盘组可以有最多10000个磁盘,每一个asm磁盘最大可以有2tb,由于bug 6453944的存在,往磁盘组中添加大于2tb大小的磁盘有可能会成功,这个bug在10.2.0.4、11.1.0.7、11.2版本被修复,更多的内容可以参考mos doc id 736891.1 。

译者注:12c的asm版本在磁盘组的各种限制上进一步得到了释放,具体请参照本系列的【asm 12c新特性】篇

asm looks for disks in the os location specified by asm_diskstring initialization parameter. all platforms have the default value, so this parameter does not have to be specified. in a cluster, asm disks can have different os names on different nodes. in fact, asm does not care about the os disk names, as those are not kept in asm metadata.

任何一个asm文件只能存放在一个asm磁盘组中,但是,一个磁盘组可以包含多个数据库的文件,一个数据库里的相关文件也可以存放在多个磁盘组中。

asm磁盘组可以存储所有类型的数据库文件-数据文件、控制文件、redo日志、备份集、数据泵文件等等,但是二进制文件和文本文件不能被直接存储。此外asm也会存储它自身的元数据文件到磁盘组中,元数据文件有它自己的编号机制,与数据文件的编号是独立的,asm 256以下的编号都是为asm元数据文件预留的。

acfs集群文件系统在11.2版本被引入,它进一步扩展了asm能够支持的文件类型,支持数据库和应用程序的二进制文件、文本文件、日志文件,trace文件,几乎任何传统文件系统能够存放的文件。最为重要的,它是一个集群文件系统。

<b></b>

<b>本文来自云栖社区合作伙伴“dbgeek”</b>