使用asm来部署 超大数据库(10TB到PB 范围)

參考原文:
Deployment of very large databases (10TB to PB range) with Automatic Storage Management (ASM) (Doc ID 368055.1)


范围:
本文适用于在全部平台上的asm配置。包含使用rac 和单实例 环境。
本文适用于超大数据库的创建。而且该数据库会增长到超过10TB级别。


挑战:
asm 元数据存储

解决方式:

au(分配单元) 是asm磁盘组中的主要的分配单位。默认情况下。asm au的大小被设置为1MB

asm data extents 裸设备,该裸设备来存放asm file的内容。
在oracle database 10g里边,每个data extent 是一个单独的au(分配单元)
因为这个extent 和au 的  1对1的映射(map)关系。在一个超大的数据库中。一个asm file extent map 能够增长到GB。在这个情况下。内存使用和打开文件的性能上,效率是及其低下的。

asm 提供了2个隐含參数,这两个參数同意你创建au大小为16MB 和 fine grain striping 大小为1MB(之前为128KB)  的 asm 磁盘组
这降低extent map size 到原来的1/16.  au 參数仅仅能用在磁盘组 建立的时候。当一个磁盘组被建立后,你不能改变这个磁盘组的au的大小

为了改变au size(也就是data extent size),你必须reset 以下的asm 隐含參数:从1MB改为16MB,fine grain stripe size 改为1MB
asm实例必须被关闭。_asm_ausize and _asm_stripesize 必须在asm实例的init.ora參数文件里被重置(reset),然后asm实例被重新启动,以继承该參数的新值。
o _asm_ausize=16777216
o _asm_stripesize=1048576
--->注意:以上值的单位为Byte

你必须改动asm file template 。为全部的file types 设置 stripe type 为‘FINE’,以使用1MB的striping。
这必须在asm diskgoup 被创建完之后做。


为了让这两个參数值生效,asm实例必须被重新启动。

当设置了这个两个隐含參数并重新启动了asm 实例之后,不论什么被创建的asm 磁盘组将会使用新的au size 和FINE  stripe size

为了在创建asm 磁盘组时。使用正常的1MB au size 和 128K FINE stripe size。这两个隐含參数应该被移除而且asm 须要被重新启动。


样例:
以下的样例建立 了一个au size(即:data extents size ) 为16MB的asm 磁盘组,而且对全部的datafile 来说,FINE striping size 为1MB

1. 关闭 asm 实例

2. 在asm 的init.ora文件里加入例如以下參数:
   _asm_ausize=16777216
   _asm_stripesize=1048576
3.重新启动asm 实例。

4.建立一个磁盘组:
CREATE DISKGROUP diskgroup_name disk '/devices/diska1','/devices/diska2';

5. 将all asm file 模板 改为 FINE grained:
   o ALTER DISKGROUP diskgroup_name ALTER TEMPLATE <tmpl> ATTRIBUTES (FINE);
   o Repeat this command for all ASM file types. Attributes types are listed
     below:
   o CONTROLFILE, DATAFILE, ONLINELOG, ARCHIVELOG, TEMPFILE, BACKUPSET,
     PARAMETERFILE, DATAGUARDCONFIG, FLASHBACK, CHANGETRACKING, DUMPSET,
     XTRANSPORT, AUTOBACKUP


16MB的 ausize 和  1MB的FINE grain striping 能有效的提供 1MB的 data striping 。同一时候。减少了asm file extent的过载。


这个配置 能在打开 asm file时更快,而且更有效的支持10TB 到PB 范围内的asm database

注意:
Apply the fix for Bug 5100163 in 10.2.0.4

This patch should be applied if you have created ASM Diskgroups with the AU size greater than 1MB and have fewer than 3585 user files.
The following command must be ran on each Diskgroup after applying the patch:
        ALTER DISKGROUP <DG_NAME> CHECK ALL REPAIR