添加删除ASM磁盘
创建磁盘:
[root@kel ~]# oracleasm createdisk KEL3 /dev/sdf1 Writing disk header: done Instantiating disk: done
创建完成之后,查看下磁盘:
[root@kel ~]# oracleasm listdisks DATA KEL1 KEL2 KEL3 OCR_VOTE
查看磁盘空间大小:(在ORACLE_SID=+ASM之后利用sqlplus进入)
SQL> select name,total_mb,free_mb from v$asm_disk; NAME TOTAL_MB FREE_MB ---------- ---------- ---------- 2047 0 KEL1 2047 1995 KEL2 2047 1995 ASM_0000 2047 387 ASM_0001 2047 387
将新创建的磁盘加入磁盘组ASM之中:
SQL> alter diskgroup ASM add disk 'ORCL:KEL3' rebalance power 1; Diskgroup altered.
ASM磁盘组支持动态扩展,我们可以向现有的磁盘组动态加入新的磁盘,新磁盘加入后,Oracle通过后台RBAL进行Rebalance,将当前的数据均衡到新增加的磁盘上。Drop磁盘亦会Rebalance。
asm_power_limit 参数用于控制Rebalance的速度,取值1~11,数字越大,平衡速度越快,默认值是1。如果该数字很大,则可能因为Rebalance而影响性能。
查看磁盘的rebalance变化:
第一次查看:
SQL> select name,total_mb,free_mb from v$asm_disk; NAME TOTAL_MB FREE_MB ---------- ---------- ---------- KEL1 2047 1995 KEL2 2047 1995 KEL3 2047 1995 ASM_0000 2047 387 ASM_0001 2047 387
第二次查看:
SQL> / NAME TOTAL_MB FREE_MB ---------- ---------- ---------- KEL1 2047 1995 KEL2 2047 1995 KEL3 2047 993 ASM_0000 2047 885 ASM_0001 2047 885
SQL> show parameter asm_power_limit NAME TYPE VALUE ------------------------------------ ---------- ------------------------------ asm_power_limit integer 1
查看磁盘组里的磁盘组成:
SQL> select group_number,name from v$asm_disk; GROUP_NUMBER NAME ------------ ---------- 2 KEL1 2 KEL2 1 KEL3 1 ASM_0000 1 ASM_0001
删除磁盘组中的一块磁盘:
SQL> alter diskgroup ASM drop disk "KEL3" rebalance power 11; Diskgroup altered.
查看磁盘组的信息,可以磁盘组的信息是慢慢变化的,开始磁盘KEL3还是存在于磁盘组中,到最后数据迁移完毕之后,磁盘KEL3就不属于任何磁盘组了,从下面可以看出:
SQL> select group_number,name from v$asm_disk; GROUP_NUMBER NAME ------------ ---------- 2 KEL1 2 KEL2 1 KEL3 1 ASM_0000 1 ASM_0001 SQL> select group_number,name from v$asm_disk; GROUP_NUMBER NAME ------------ ---------- 0 2 KEL1 2 KEL2 1 ASM_0000 1 ASM_0001
for linux and python