环境 --系统环境:Centos 6.9 --数据库:Oracle 11.2.0.4 --磁盘绑定:udev
目的 --生产环境ASM磁盘组DATA存储空间不足,需要给磁盘组DATA加一块磁盘,避免后续表空间无法扩容导致的宕机事件。 [root@RAC01 ~]# su - grid [grid@RAC01 ~]$ asmcmd ASMCMD> lsdg State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name MOUNTED EXTERN N 512 4096 1048576 819200 2864 0 2864 0 N DATA/ MOUNTED EXTERN N 512 4096 1048576 307200 284136 0 284136 0 N FRA/ MOUNTED EXTERN N 512 4096 1048576 15360 14964 0 14964 0 Y OCR/
需求
生产环境下无停机窗口,需在业务空闲时候进行ASM磁盘在线扩容
具体实施步骤如下:
1、添加ASM磁盘(我的环境是超融合平台,可在线添加共享存储)
2、将新的虚拟共享盘添加到两个RAC节点中
以节点1为例,两个节点一样的操作
3、确定新添加共享磁盘的盘符
--确定盘符 fdisk -l /dev/sdm /dev/sdn
4、获取共享盘的uuid
[root@RAC01 ~]# scsi_id -g -u -d /dev/sdm
3613e0937b040da0801c0cd8afee9a263
[root@RAC01 ~]# scsi_id -g -u -d /dev/sdn
363580ec4c0409109dd506e11126c9832
5、配置asm磁盘组规则(两个节点都需要加好)
[root@RAC01 ~]# vim /etc/udev/rules.d/99-oracle-asmdevices.rules
最后面添加两行规则
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name", RESULT=="365a80d6d5043170bd890158c02afd57d", NAME="asm-diskm", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$name", RESULT=="3623106a7b04e3e0922203f1b680de869", NAME="asm-diskn", OWNER="grid", GROUP="asmadmin", MODE="0660"
6、使用如下的命令是udev重新加载规则(两个节点都需要执行)
udevadm control --reload
udevadm trigger --type=devices --action=change
partprobe
最后一个命令partprobe可以先别执行,可以先查看是否识别到asm磁盘了。
7、检查磁盘,确保各个节点可以识别到磁盘且一致
[root@RAC01 ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 0 Mar 10 08:40 /dev/asm-diska
brw-rw---- 1 grid asmadmin 8, 16 Mar 10 08:40 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 32 Mar 10 08:25 /dev/asm-diskc
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskd
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diske
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskf
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskg
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskh
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diski
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskj
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskk
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskl
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskm
brw-rw---- 1 grid asmadmin 8, 48 Mar 10 08:40 /dev/asm-diskn
可以看到,磁盘已经添加上去了
12.ASM扩容 --检查asm是否识别到未添加的磁盘 [root@RAC01 ~]# su - grid [grid@RAC01 ~]$ sqlplus "/as sysasm" SQL> set line 200 SQL> col NAME format a25 SQL> col PATH format a40 SQL> col FAILGROUP format a25 SQL> select group_number,name,path,mount_status,state,redundancy,total_mb,free_mb,failgroup,create_date from v$asm_disk order by 1,2;
可以看到,/dev/asm-diskm、/dev/asm-diskn未添加到任何磁盘组
--给磁盘组DATA添加磁盘 SQL> alter diskgroup DATA add disk '/dev/asm-diskm' rebalance power 5; SQL> alter diskgroup DATA add disk '/dev/asm-diskn' rebalance power 5; 注:rebalance power的级别从1到11中选择一个数值;数值越大,rebalance速度越快,对现有运行系统影响也越大。需要根据当时业务权衡选择适合的级别;
--监控磁盘组rebalance完成情况
select * from v$asm_operation;
--检查添加结果
SQL> col name format a20
SQL> set line 200
SQL> col name format a20
SQL> col path format a40
SQL> select group_number,name,path,mount_status,state,redundancy,total_mb,free_mb,failgroup,create_date from v$asm_disk order by 1,2;
检查ASM磁盘的扩容情况,可以看到,已经扩容200G成功了
[grid@RAC01 ~]$ asmcmd
ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 4096 1048576 1024000 207664 0 2864 0 N DATA/
MOUNTED EXTERN N 512 4096 1048576 307200 284136 0 284136 0 N FRA/
MOUNTED EXTERN N 512 4096 1048576 15360 14964 0 14964 0 Y OCR/