ASM删除disk
有篇文章给大家介绍了,在ASM实例里添加一个新盘的方法
可见 http://inthirties.com:90/thread-945-1-1.html
既然我们有添加的动作,那么我们肯定有会有删除的需求吧。这里就给大家讲讲如果删除一个disk从ASM实例里。
还是那几个关键的表,我们先来看看
v$asm_diskgroup
v$asm_disk
v$asm_disk_stat
先看看我们现在的diskgroup的状况
SQL> select name, total_mb, free_mb, total_mb-free_mb used_mb from v$asm_diskgroup;
NAME TOTAL_MB FREE_MB USED_MB
------------------------------ ---------- ---------- ----------
ORADATA 26614 23331 3283
这里可以看到我们现在有一个diskgroup,其中的数据用了3G
再来看看每个disk的状况
SQL> select group_number, name, total_mb, free_mb, total_mb-free_mb used_mb from v$asm_disk_stat;
GROUP_NUMBER NAME TOTAL_MB FREE_MB USED_MB
------------ ------------------------------ ---------- ---------- ----------
1 VOL1 10236 8996 1240
1 VOL2 4094 3571 523
1 VOL3 12284 10764 1520
可以看到这里的使用的均衡,已经看到了
先看看你需要准备delete的盘是哪个,比如我们现在删除是设备dev/sde1
[root@localhost ~]# /etc/init.d/oracleasm querydisk -v /dev/sde1
Device "/dev/sde1" is marked an ASM disk with the label "VOL3"
可以看到是VOL3这个disk
有时候我们是反过来的,通过asm_disk来找所在的磁盘设备,比如找VOL3对应的磁盘设备
可以运行
[root@localhost ~]# /etc/init.d/oracleasm querydisk -v /dev/* 2>&1 | grep VOL3
Device "/dev/sde1" is marked an ASM disk with the label "VOL3"
有时候,版本不同的oracleasm可以有不同的方法,比如有的asm版本可以直接
[root@localhost ~]# /etc/init.d/oracleasm querydisk -p VOL3
Disk "VOL3" is a valid ASM disk
/dev/sde1: LABEL="VOL3" TYPE="oracleasm"
现在都确定了,我们就可以开始干了
SQL> alter diskgroup oradata drop disk VOL3;
Diskgroup altered.
好快,执行成功
马上查查现在的情况
SQL> select name, total_mb, free_mb from v$asm_disk_stat;
NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
VOL1 10236 8781
VOL2 4094 3425
VOL3 12284 11124
奇怪了,这个VOL3可还在呀,不过看到FREE_MB的差别没有,这里有改变了,
是不是没有drop完全呀,在drop一次看看
SQL> alter diskgroup oradata drop disk VOL3;
alter diskgroup oradata drop disk VOL3
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15071: ASM disk "VOL3" is already being dropped
在drop中了,呵呵呵,不要着急,asm的管理drop disk和add disk是联机的,有一个rebalance的过程。
我们在v$asm_operation表里一看究竟
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- -----------
1 REBAL RUN 1 1 802 2051 644 1
确实还在rebalance中呀。
结合这上面的est_minutes,到时间了,我们在看看
SQL> select name, total_mb, free_mb from v$asm_disk_stat;
NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
VOL1 10236 8134
VOL2 4094 2914
已经没有VOL3的记录了,在看看v$asm_operation,也没有记录了,现在操作已经OK了。
我们现在设备/dev/sde1已经解放出来了,可以针对去磁盘本身的一些动作了。
这里是联机rebalance的,所以使用ASM的实例一定有一些动作的。有兴趣的朋友可以监控一下使用ASM的数据库实例的alert日志的变化
可见 http://inthirties.com:90/thread-945-1-1.html
既然我们有添加的动作,那么我们肯定有会有删除的需求吧。这里就给大家讲讲如果删除一个disk从ASM实例里。
还是那几个关键的表,我们先来看看
v$asm_diskgroup
v$asm_disk
v$asm_disk_stat
先看看我们现在的diskgroup的状况
SQL> select name, total_mb, free_mb, total_mb-free_mb used_mb from v$asm_diskgroup;
NAME TOTAL_MB FREE_MB USED_MB
------------------------------ ---------- ---------- ----------
ORADATA 26614 23331 3283
这里可以看到我们现在有一个diskgroup,其中的数据用了3G
再来看看每个disk的状况
SQL> select group_number, name, total_mb, free_mb, total_mb-free_mb used_mb from v$asm_disk_stat;
GROUP_NUMBER NAME TOTAL_MB FREE_MB USED_MB
------------ ------------------------------ ---------- ---------- ----------
1 VOL1 10236 8996 1240
1 VOL2 4094 3571 523
1 VOL3 12284 10764 1520
可以看到这里的使用的均衡,已经看到了
先看看你需要准备delete的盘是哪个,比如我们现在删除是设备dev/sde1
[root@localhost ~]# /etc/init.d/oracleasm querydisk -v /dev/sde1
Device "/dev/sde1" is marked an ASM disk with the label "VOL3"
可以看到是VOL3这个disk
有时候我们是反过来的,通过asm_disk来找所在的磁盘设备,比如找VOL3对应的磁盘设备
可以运行
[root@localhost ~]# /etc/init.d/oracleasm querydisk -v /dev/* 2>&1 | grep VOL3
Device "/dev/sde1" is marked an ASM disk with the label "VOL3"
有时候,版本不同的oracleasm可以有不同的方法,比如有的asm版本可以直接
[root@localhost ~]# /etc/init.d/oracleasm querydisk -p VOL3
Disk "VOL3" is a valid ASM disk
/dev/sde1: LABEL="VOL3" TYPE="oracleasm"
现在都确定了,我们就可以开始干了
SQL> alter diskgroup oradata drop disk VOL3;
Diskgroup altered.
好快,执行成功
马上查查现在的情况
SQL> select name, total_mb, free_mb from v$asm_disk_stat;
NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
VOL1 10236 8781
VOL2 4094 3425
VOL3 12284 11124
奇怪了,这个VOL3可还在呀,不过看到FREE_MB的差别没有,这里有改变了,
是不是没有drop完全呀,在drop一次看看
SQL> alter diskgroup oradata drop disk VOL3;
alter diskgroup oradata drop disk VOL3
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15071: ASM disk "VOL3" is already being dropped
在drop中了,呵呵呵,不要着急,asm的管理drop disk和add disk是联机的,有一个rebalance的过程。
我们在v$asm_operation表里一看究竟
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES
------------ ----- ---- ---------- ---------- ---------- ---------- ---------- -----------
1 REBAL RUN 1 1 802 2051 644 1
确实还在rebalance中呀。
结合这上面的est_minutes,到时间了,我们在看看
SQL> select name, total_mb, free_mb from v$asm_disk_stat;
NAME TOTAL_MB FREE_MB
------------------------------ ---------- ----------
VOL1 10236 8134
VOL2 4094 2914
已经没有VOL3的记录了,在看看v$asm_operation,也没有记录了,现在操作已经OK了。
我们现在设备/dev/sde1已经解放出来了,可以针对去磁盘本身的一些动作了。
这里是联机rebalance的,所以使用ASM的实例一定有一些动作的。有兴趣的朋友可以监控一下使用ASM的数据库实例的alert日志的变化