创建磁盘:
[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
查看asm_power_limit参数值:
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