天天看点

添加删除ASM磁盘

创建磁盘:

[[email protected] ~]# oracleasm createdisk KEL3 /dev/sdf1
Writing disk header: done
Instantiating disk: done
           

创建完成之后,查看下磁盘:

[[email protected] ~]# 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
           
asm

继续阅读