oracle 11gR2 ASM添加和删除磁盘
一、环境
oracle 11gR2 RAC + Oracle Linux Server release 5.9
二、实施
备注:安全起见,操作之前停数据库实例、ASM实例
1、节点1、2磁盘信息
---共享磁盘信息
[root@11grac1 ~]# ls -l /dev/asm* --格式:/dev/asm-diskc
---需新加磁盘
[root@11grac1 ~]# ls -l /dev/sd* --/dev/sdh是新增磁盘
2、udev方式将新磁盘配置为ASM共享磁盘(节点1、2都要执行)
[root@11grac1 rules.d]# pwd
/etc/udev/rules.d
[root@11grac1 rules.d]# for i in h; do echo "KERNEL=="sd", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="scsi_id -g -u -s /block/sd$i
", NAME="asm-disk$i", OWNER="grid", GROUP="asmadmin", MODE="0660""; done
KERNEL=="sd", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s p",RESULT=="SATA_VBOX_HARDDISK_VBfeab29eb-3b887e7b_", NAME="asm-diskh", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@11grac1 rules.d]# vi 99-oracle-asmdevices.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="SATA_VBOX_HARDDISK_VBfeab29eb-3b887e7b_",NAME="asmdiskh",OWNER="grid",GROUP="asmadmin", MODE="0660"
3、重启udev服务
[root@11grac1 rules.d]# start_udev
[root@11grac2 rules.d]# start_udev
4、检查/dev/sdh是否已为/dev/asm-diskh格式的asm磁盘
[root@11grac1 ~]# ls -l /dev/asm*
5、向ASM磁盘组中加盘(grid用户的sysasm)
SQL> select GROUP_NUMBER,DISK_NUMBER, MODE_STATUS,HEADER_STATUS, MODE_STATUS,state,TOTAL_MB,FREE_MB,name,PATH from v$asm_disk;
SQL> alter diskgroup data_dg add disk '/dev/asm-diskh';
SQL> select GROUP_NUMBER,DISK_NUMBER, MODE_STATUS,HEADER_STATUS,MODE_STATUS,state,TOTAL_MB,FREE_MB,name,PATH from v$asm_disk;
添加完磁盘之后,oracle会自动做重平衡rebalance操作,可以通过视图查看
SQL> select * from v$asm_operation;
SOFAR:就是目前为止挪动的AU数量
EST_WORK:估计要挪动的AU数量
EST_RATE:估计每分钟挪动的AU数量
EST_MINUTES:估计挪动多少分钟
重平衡的过程就是从其他的磁盘向新磁盘挪动数据的过程,如果数据量很大,这个时间会很长,可以更改power值加快速度,默认power值为1,可根据存储性能将此值设置大一些(power取值0-11),数据平衡完毕复原power值即可
SQL> show parameter asm_power_limit
SQL> alter diskgroup data_dg rebalance power 11;
注:power=0是停止rebalance操作
也可在加盘时直接添加rebalance指令,如下:
SQL> alter diskgroup data_dg add disk '/dev/asm-diskh' rebalance power 8;
注:如添加磁盘报错(新增磁盘不为全新盘,有旧数据在里头),可使用dd命令将磁盘头信息清除掉
dd if=/dev/zero of=/dev/sdd bs=4096 count=256 --磁盘头信息大小一般是1M。
6、删除ASM磁盘
SQL> select GROUP_NUMBER,DISK_NUMBER, MODE_STATUS,HEADER_STATUS, MODE_STATUS,state,TOTAL_MB,FREE_MB,name,PATH from v$asm_disk;
SQL> alter diskgroup data_dg drop disk 'DATA_DG_0002'; --按照name来删除
或:SQL> alter diskgroup data_dg drop disk 'DATA_DG_0002' rebalance power 8;
SQL> select * from v$asm_operation;
SQL> select GROUP_NUMBER,DISK_NUMBER, MODE_STATUS,HEADER_STATUS, MODE_STATUS,state,TOTAL_MB,FREE_MB,name,PATH from v$asm_disk;