这个参数 ASM_POWER_LIMIT 参数控制 ASM 后台进程 ARBx 的数量。ARBx 进程用来进行 ASM 磁盘数据重新分布打散。ASM_POWER_LIMIT 取值 从 0 到 11(据说从 10gR2 开始可以设置为 0,设置为0是为不做reblance,默认是1,数值越大速度越快,对性能要求更高,主机繁忙的时候需要特别注意 ). 当新添加磁盘或者删除磁盘后,ASM 会启动 ARBx 进行 IO 分散操作,这是个非常消耗资源的动作,所以一定要选择系统空闲的时候进行。
ASM 默认的 Stripe Size 为 128K。 (一般操作系统的一个 IO 最大是 1M,对于 Block Size 为 8K 的系统,一般来说,db_file_multiblock_read_count 设置为 16 即可)。分配单元( Allocation Unit ) 是 1M,这个 AU 对应 extent 。在一些 DW 环境,随着数据量增大,AU 会非常的多,会产生性能影响。Stripe Size 和 AU 是可以通过 ASM 实例上的两个隐含参数调整的:
INSTANCE_TYPE:ASM实例要求此参数为ASM,隐含着将DB_UNIQUE_NAME设置为+ASM.
ASM_DISKSTRING:指定在磁盘发现过程应当查找的位置,默认值是NULL。
ASM_DISKGROUPS:指定在实例启动时要自动装载的磁盘组的名称,默认值是NULL。
ASM在分配空间时,以AU为单位进行,AU即Allocation units,是组成ASM disk的基本单元。
在Oracle 10gR2中,ASM AU的缺省单位大小是1M,相应的条带大小是128K。
在ASM中,可以通过调整_asm_ausize隐含参数的大小来进行调整,_asm_stripesize控制相应的条带化参数。
从v$asm_diskgroup视图可以查询得到相关的信息:
SQL> select group_number,name,sector_size,block_size,allocation_unit_size from v$asm_diskgroup;
GROUP_NUMBER NAME SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE
------------ ------ ----------- ---------- --------------------
1 ARCHDG 512 4096 1048576
2 DATADG 512 4096 1048576
在Oracle Database 11g中,可以通过类似如下语句在创建磁盘组时指定au_size:
SQL> CREATE DISKGROUP DATA DISK '/dev/raw/raw15', '/dev/raw/raw16',
'/dev/raw/raw17' ATTRIBUTE 'au_size' = '16M', 'compatible.asm' = '11.1' 'compatible.rdbms' = '11.1';
ASM允许的相关参数可以从DB的实例中查询获得,以下是一系列和asm相关的初始化参数:
SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.indx = y.indx AND x.ksppinm LIKE '%asm%';
NAME VALUE DESCRIB
------------------------------ -------------------- ------------------------------------------------------------
asm_diskstring disk set locations for discovery
_asm_disk_repair_time 14400 seconds to wait before dropping a failing disk
asm_diskgroups disk groups to mount automatically
asm_power_limit 1 number of processes for disk rebalancing
_asm_ausize 1048576 allocation unit size
_asm_blksize 4096 metadata block size
_asm_acd_chunks 1 initial ACD chunks created
_asm_libraries ufs library search order for discovery
_asm_maxio 1048576 Maximum size of individual I/O request
_asm_allow_only_raw_disks TRUE Discovery only raw devices
_asmlib_test 0 Osmlib test event
_asm_allow_resilver_corruption FALSE Enable disk resilvering for external redundancy
_asmsid asm ASM instance id
_asm_wait_time 18 Max/imum time to wait before asmb exits
_asm_stripewidth 8 ASM file stripe width
_asm_stripesize 131072 ASM file stripe size
_asm_droptimeout 60 timeout before offlined disks get dropped (in 3s ticks)
_asm_emulmax 10000 max number of concurrent disks to emulate I/O errors
_asm_emultimeout 0 timeout before emulation begins (in 3s ticks)
_asm_kfdpevent 0 KFDP event
20 rows selected.