一、条带化:
ASM的条带化有两种:coarse和fine-gained。AU是最小分配单元,缺省是1M,每个AU缺省由8个128K条带空间组成。
coarse条带化中一个extent映射为一个AU,缺省是1M大小,比如4个磁盘
#0~#3,分配extent时候,第一个AU分配给disk0,第二个AU给disk1,依此顺推。所以该条带化适合连续的I/O读写,比如全表扫描表。
Fined-gained条带化,一个AU中的8个128K条带空间,平均打散在磁盘上,也就是说,4个磁盘,1个AU是平均分布在4个磁盘,每个磁盘2个128K。适合于对数据读写延迟比较敏感的文件。如redo日志,控制文件,spfile等。
10g版本AU和条带设置参数:_asm_ausize和_asm_stripesize,11g版本数据库在创建diskgroup时候,可以设置attribute 'au_size' = '16M'。
二、Rebalance
从diskgroup中添加或删除disk时候,将触发RBAL进程创建rebalance计划,并计算执行Rebalance所需要时间和工作要求,然后发消息给ASM Reblance (ARBx)进程处理该请求。ARBx进程的数量由参数ASM_POWER_LIMIT决定。COD (Continuting Operation Directory)用于记录rebalances情况。如果rebalance失败,在重启instance时候,将从COD读取记录,重新启动rebalance。ARBx进程对每个extents进行locked, relocated和unlocked操作,执行过程中可以参考v$asm_operation视图。
ASM_POWER_LIMIT范围是0~11,0:表示不进行rebalance,值越大, rebalance速度越快。
在进行rebalance时候要注意以下几点:
1、每个disk的大小必须是相同,如果存在一个小盘,因为rebalance将对每个盘的分配相同比例的空间,可能造成rebalance时候空间不足。
2、rebalance仅仅在diskgroup发生改变时候才进行的,并不是定时执行
3、如果磁盘大小一样,仍然没有进行rebalance,需要查看asm_power_limit
4、如果rebalance执行过程中,server宕机,重启后会自动进行rebalance
5、影响rebalance速度因素有很多,最重要是I/O子系统
6、如果执行过程中,空闲空间不足,造成rebalance失败,将出现ORA-15041错误,需要再添加disk,。
7、如果需要频繁添加disk,每一次都可能造成数据的频繁移动,为提高效率,最好批量添加。
从老的磁盘阵列切换和迁移disk到新的磁盘阵列命令如下:
SQL> alter diskgroup add disk '/dev/xxx/xxx'
drop disk [disk_name] rebalance power 8;
ASM的条带化有两种:coarse和fine-gained。AU是最小分配单元,缺省是1M,每个AU缺省由8个128K条带空间组成。
coarse条带化中一个extent映射为一个AU,缺省是1M大小,比如4个磁盘
#0~#3,分配extent时候,第一个AU分配给disk0,第二个AU给disk1,依此顺推。所以该条带化适合连续的I/O读写,比如全表扫描表。
Fined-gained条带化,一个AU中的8个128K条带空间,平均打散在磁盘上,也就是说,4个磁盘,1个AU是平均分布在4个磁盘,每个磁盘2个128K。适合于对数据读写延迟比较敏感的文件。如redo日志,控制文件,spfile等。
10g版本AU和条带设置参数:_asm_ausize和_asm_stripesize,11g版本数据库在创建diskgroup时候,可以设置attribute 'au_size' = '16M'。
二、Rebalance
从diskgroup中添加或删除disk时候,将触发RBAL进程创建rebalance计划,并计算执行Rebalance所需要时间和工作要求,然后发消息给ASM Reblance (ARBx)进程处理该请求。ARBx进程的数量由参数ASM_POWER_LIMIT决定。COD (Continuting Operation Directory)用于记录rebalances情况。如果rebalance失败,在重启instance时候,将从COD读取记录,重新启动rebalance。ARBx进程对每个extents进行locked, relocated和unlocked操作,执行过程中可以参考v$asm_operation视图。
ASM_POWER_LIMIT范围是0~11,0:表示不进行rebalance,值越大, rebalance速度越快。
在进行rebalance时候要注意以下几点:
1、每个disk的大小必须是相同,如果存在一个小盘,因为rebalance将对每个盘的分配相同比例的空间,可能造成rebalance时候空间不足。
2、rebalance仅仅在diskgroup发生改变时候才进行的,并不是定时执行
3、如果磁盘大小一样,仍然没有进行rebalance,需要查看asm_power_limit
4、如果rebalance执行过程中,server宕机,重启后会自动进行rebalance
5、影响rebalance速度因素有很多,最重要是I/O子系统
6、如果执行过程中,空闲空间不足,造成rebalance失败,将出现ORA-15041错误,需要再添加disk,。
7、如果需要频繁添加disk,每一次都可能造成数据的频繁移动,为提高效率,最好批量添加。
从老的磁盘阵列切换和迁移disk到新的磁盘阵列命令如下:
SQL> alter diskgroup add disk '/dev/xxx/xxx'
drop disk [disk_name] rebalance power 8;