如题,在Windows系统下维护ASM磁盘提供存储设备的Oracle数据库时,该如何确定ASM磁盘对应的磁盘设备呢?
1 在操作系统层面看到下述磁盘信息,Disk 0是操作系统盘,Disk 1,Disk 2是2块ASM磁盘:

2 从ASM实例里,看到磁盘组、磁盘的信息如下:
SQL> select name,total_mb,free_mb,state from v$asm_diskgroup;
NAME                             TOTAL_MB    FREE_MB STATE
------------------------------ ---------- ---------- -----------
ORADATA                            206849      32661 MOUNTED
SQL> select name,total_mb,free_mb,state from v$asm_disk;
NAME                             TOTAL_MB    FREE_MB STATE
------------------------------ ---------- ---------- --------
                                   206849          0 NORMAL
ORADATA_0001                       206849      32661 NORMAL
SQL> select name,total_mb,free_mb,state,path from v$asm_disk;
NAME                             TOTAL_MB    FREE_MB STATE    PATH
------------------------------ ---------- ---------- -------- --------------------
                                   206849          0 NORMAL   \\.\ORCLDISKORADATA0
ORADATA_0001                       206849      32661 NORMAL   \\.\ORCLDISKDATA0
SQL>
上述看到的信息已经是对ORADATA磁盘组执行过drop disk之后看到的信息。
那么接下来,如果想要OS级别移除ORADATA磁盘里path为\\.\ORCLDISKORADATA0的磁盘的话,该如何确定该磁盘对应OS级别的磁盘呢?究竟是Disk 1还是Disk2呢?
3 方法1:
C:\Users\Administrator>asmtool -list NTFS \Device\Harddisk0\Partition1 278973M ORCLDISKDATA0 \Device\Harddisk1\Partition1 206849M ORCLDISKORADATA0 \Device\Harddisk2\Partition1 206849M C:\Users\Administrator>
方法2:
通过DBCA进入ASM管理[Oracle 10g版本,11g应该使用ASMCA]之后,选择给磁盘stamp disk之后,也可以看到下述信息:

进而,均可以可定path为\\.\ORCLDISKORADATA0的ASM磁盘对应于OS上的Disk2。
4 通过上述第3步骤移除磁盘的stamp操作之后,看到的信息如下:

此时,已经从ASM实例里看不到ASM磁盘的信息了。
5 最终,从OS级别删除磁盘Disk 2的卷信息,分区信息之后,如下:

附:在Linux上,可以直接通过/usr/sbin/oracleasm querydisk /dev/sd*的方法来查找ASM磁盘对应OS级别的设备信息。