這個參數 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.