本文是讲述有关Oracle数据库磁盘输入输出性能和优化的各个不同方面的一系列文章中的一篇。每篇技巧性的文章都摘自即将由Rampant科技出版社出版的图书《Oracle磁盘输入输出性能调优》,作者是Mike Ault。从该系列文章的主页上能看到其他即将发布的部分。
自动存储管理(ASM)配置
在运行你的数据库实例前,你必须创建一个独立的自动存储管理(ASM)实例,才能启动自动存储管理(ASM)工具。一个自动存储管理(ASM)实例并不需要一个数据库实例处于运行状态,就像你最初配置那些被自动存储管理(ASM)实例管理的组件那样。但是,为了使用自动存储管理(ASM)来管理你的Oracle数据库文件,你必须同时运行一个数据库实例和一个自动存储管理(ASM)实例。自动存储管理(ASM)已经被整合到数据库服务器中,不需要作为一个独立产品进行安装。一般的Oracle 10g就可被用作自动存储管理(ASM)实例。因此,并没有单独的针对自动存储管理(ASM)的Oracle产品。尽管如此,为了使用自动存储管理(ASM)文件,在启动要使用自动存储管理(ASM)文件的数据库实例之前,必须先配置和开启一个自动存储管理(ASM)实例。
在Oracle 10g 数据库中,数据配置助手(DBCA)、服务器控制工具集(SRVCTL)或者Oracle企业管理器()被用来在传统的和实时应用集群(RAC)环境中配置自动存储管理(ASM)。
自动存储管理(ASM)可用来自动化和简化对数据文件、控制文件和日志文件的优化布局。自动存储管理(ASM)在所有可使用的磁盘上自动分配数据库文件,并且,当存储配置改变时,数据库存储会被重新分配,从而达到一种存储均衡状态。自动存储管理(ASM)也可通过镜像数据库文件来用来提供冗余。
本质上讲,自动存储管理(ASM)消除了使用传统的管理费用。当使用自动存储管理(ASM)时,无需手动将数据存放在磁盘上去。同样地,管理员只需管理一些磁盘组,从管理成百上千的文件中得以解脱。使用自动存储管理(ASM),数据库管理员将使用磁盘组来建立一个数据库。以后,当在磁盘组内部监测和改变磁盘分配时,数据库管理员仅需要关注磁盘组。
自动存储管理(ASM)将每个文件切割成许多小扩展文件,并将它们平均分散在一个磁盘组的所有磁盘上。一旦自动存储管理(ASM)磁盘组建立,创建和删除文件的时候,Oracle数据库都会从磁盘组自动分配存储空间。
不再需要的文件会被自动存储管理(ASM)自动删除,而无需像以前版本中那样还需要手动发出命令。对于那些不是非常可靠的磁盘而言,自动存储管理(ASM)增强了这类磁盘的数据库操作。
自动存储管理(ASM)概念
自动存储管理(ASM)使用了一些基本概念。自动存储管理(ASM)的操作目标是磁盘组(即,磁盘的组合)。在磁盘组中,它创建自动存储管理(ASM)文件。因而,有以下几个主要构建模块:
自动存储管理(ASM)磁盘
自动存储管理(ASM)磁盘组
自动存储管理(ASM)文件
自动存储管理(ASM)模板
让我们详细探讨一下这些概念。下图简要给出了一个自动存储管理(ASM)实例的组建,以及它与数据库实例的关系。
自动存储管理(ASM)实例的组建
自动存储管理(ASM)磁盘组
基本上,一个磁盘组就是一个或多个作为一个独立逻辑单元管理的磁盘。存储在自动存储管理(ASM)磁盘组中的任何数据结构都被完全地包含在其磁盘组中,或者是自包含的。使用自动存储管理(ASM)的数据库,无需关闭即可添加或删除一个磁盘。当磁盘组的配置改变时,自动存储管理(ASM)会重新分配数据的分布,来确保所有磁盘的输入输出访问均衡。
我们提到在一个单独的自动存储管理(ASM)磁盘组中,任何单个自动存储管理(ASM)文件都是自包含的。尽管如此,一个自动存储管理(ASM)磁盘组可以包含属于多个数据库的文件,并且,单个数据库也能使用多个自动存储管理(ASM)磁盘组的存储空间。你可以通过在某个数据库的文件目标初始化参数中指定磁盘组,来指定该数据库的文件对应的默认磁盘组。
自动存储管理(ASM)将文件切割成大小为1MB的小扩展文件,并把它们平均分配到某个磁盘组的所有磁盘中去。自动存储管理(ASM)用指针记录每个小扩展文件的位置,而不是使用某种数学函数来计算每个小扩展文件的位置。当磁盘组的配置改变时,自动存储管理(ASM)只需移动个别的小扩展文件,而不需为了使其遵循基于磁盘数的某个数学公式而移动所有的小扩展文件。
对于那些像日志文件一样需要低延迟的文件,自动存储管理(ASM)提供更细粒度(128k)的切割,从而允许更大的磁盘输入输出在多个磁盘上并行地被切割和处理。
大部分安装都可能拥有两个以上的磁盘组。使用多个不同磁盘组的原因如下:
l将不同生产商、不同大小、不同性能特性的磁盘进行分组。
l将拥有不同外部冗余的磁盘分到同一个组。例如,(磁盘簇)一般情况下不能和RAID 1+0或RAID5配置分配到同一个磁盘组,但如果使用自动存储管理(ASM)这将是可能的。
l对于某个给定的数据库,将工作区和恢复区进行不同分组。
注意:对于任何安装自动存储管理(ASM)的系统而言,都需要有一些没有被自动存储管理(ASM)管理的操作系统存储区,这些存储区可用于交换文件、二进制执行库,以及用户文件系统。Oracle数据库和自动存储管理(ASM)可执行文件及库都必须位于其操作系统的文件系统中,而不能位于自动存储管理(ASM)文件中。
在实时应用集群(RAC)数据库环境下,那些要载入到外部表去的文件仍要位于非实时应用集群(RAC)文件系统中,可以是某个集群文件系统,也可以是某个本地文件系统。
磁盘组类型
有三类自动存储管理(ASM)磁盘组:
1.正常冗余
2.高冗余
3.外部冗余
对于正常冗余和高冗余,磁盘组模板指定该磁盘组的所有文件的自动存储管理(ASM)冗余属性。
自动存储管理(ASM)高冗余的配置提供了很高程度的保护。对于外部冗余,自动存储管理(ASM)并不提供磁盘组的任何冗余。
在外部冗余系统中,磁盘组的底层磁盘必须提供冗余(例如,通过使用RAID存储阵列)。冗余级别或类型是在创建磁盘组时指定的。