首先,切换到grid用户,连接到ASM实例:
nbasdb1:/grid$id
uid=1001(grid) gid=1001(oinstall)
nbasdb1:/grid$sqlplus / as sysdba
SQL> select group_number, name, state, type, total_MB, free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB
———— ———- ———– —— ———- ———-
1 DATA MOUNTED EXTERN 61339520 49784512
SQL> col path for a30
SQL> select disk_number, path, name, total_mb, free_mb from v$asm_disk where group_number = 1 and rownum < 5;
DISK_NUMBER PATH NAME TOTAL_MB FREE_MB
———– ———————————– ———- ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 557632 452032
1 /dev/rdsk/c0t00173800506800ADd0s6 DATA_0001 557632 452864
2 /dev/rdsk/c0t00173800506800AEd0s6 DATA_0002 557632 451968
3 /dev/rdsk/c0t00173800506800AFd0s6 DATA_0003 557632 452352
这里报权限不足,是因为当前是11g的ASM,需要用sysasm来登录操作。
nbasdb1:/grid$sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 10 10:08:43 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> alter diskgroup DATA drop disk ‘/dev/rdsk/c0t00173800506800ACd0s6′;
alter diskgroup DATA drop disk ‘/dev/rdsk/c0t00173800506800ACd0s6′
*
ERROR at line 1:
ORA-01948: identifier’s name length (33) exceeds maximum (30)
path的名称太长,超过了限制,改为使用name来删除:
SQL> alter diskgroup DATA drop disk DATA_0000;
Diskgroup altered
这里虽然操作成功,但是磁盘并没有真正被删掉,ASM需要先在后台将该磁盘上的数据挪到其他盘上。查询该磁盘的状态如下:
SQL> col path for a35
SQL> col name for a10
SQL> set line 200
SQL> select disk_number, path, name, state, total_mb, free_mb from v$asm_disk where group_number = 1 and disk_number = 0;
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 498368
可以看到,这时磁盘的状态为DROPPING。
SQL> /
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 509120
SQL> /
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 512896
同时可以看到,free_mb的大小在不断增大,说明盘上的数据在不断被挪走。
SQL> /
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 521792
SQL> /
no rows selected
SQL>
最后,当该盘上的数据全部迁移到其他盘上去时,ASM才正式将该盘剔出磁盘组。此时,在ASM中,已经查不到该盘的记录了。
首先,切换到grid用户,连接到ASM实例:
nbasdb1:/grid$id
uid=1001(grid) gid=1001(oinstall)
nbasdb1:/grid$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 10 09:54:38 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> select group_number, name, state, type, total_MB, free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TYPE TOTAL_MB
———— —————————— ———– —— ———-
FREE_MB
———-
1 DATA MOUNTED EXTERN 61339520
49784512
SQL> col name for a10
SQL> /
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB
———— ———- ———– —— ———- ———-
1 DATA MOUNTED EXTERN 61339520 49784512
SQL> col path for a30
SQL> select disk_number, path, name, total_mb, free_mb from v$asm_disk where group_number = 1 and rownum < 5;
DISK_NUMBER PATH NAME TOTAL_MB FREE_MB
———– ———————————– ———- ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 557632 452032
1 /dev/rdsk/c0t00173800506800ADd0s6 DATA_0001 557632 452864
2 /dev/rdsk/c0t00173800506800AEd0s6 DATA_0002 557632 451968
3 /dev/rdsk/c0t00173800506800AFd0s6 DATA_0003 557632 452352
SQL> alter diskgroup DATA drop disk ‘/dev/rdsk/c0t00173800506800ACd0s6′;
alter diskgroup DATA drop disk ‘/dev/rdsk/c0t00173800506800ACd0s6′
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15260: permission denied on ASM disk group
这里报权限不足,是因为当前是11g的ASM,需要用sysasm来登录操作。
nbasdb1:/grid$sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 10 10:08:43 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> alter diskgroup DATA drop disk ‘/dev/rdsk/c0t00173800506800ACd0s6′;
alter diskgroup DATA drop disk ‘/dev/rdsk/c0t00173800506800ACd0s6′
*
ERROR at line 1:
ORA-01948: identifier’s name length (33) exceeds maximum (30)
path的名称太长,超过了限制,改为使用name来删除:
SQL> alter diskgroup DATA drop disk DATA_0000;
Diskgroup altered
这里虽然操作成功,但是磁盘并没有真正被删掉,ASM需要先在后台将该磁盘上的数据挪到其他盘上。查询该磁盘的状态如下:
SQL> col path for a35
SQL> col name for a10
SQL> set line 200
SQL> select disk_number, path, name, state, total_mb, free_mb from v$asm_disk where group_number = 1 and disk_number = 0;
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 498368
可以看到,这时磁盘的状态为DROPPING。
SQL> /
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 509120
SQL> /
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 512896
同时可以看到,free_mb的大小在不断增大,说明盘上的数据在不断被挪走。
SQL> /
DISK_NUMBER PATH NAME STATE TOTAL_MB FREE_MB
———– ———————————– ———- ——– ———- ———-
0 /dev/rdsk/c0t00173800506800ACd0s6 DATA_0000 DROPPING 557632 521792
SQL> /
no rows selected
SQL>
最后,当该盘上的数据全部迁移到其他盘上去时,ASM才正式将该盘剔出磁盘组。此时,在ASM中,已经查不到该盘的记录了。