Windows下如何查看ASM磁盘对应的设备?

如题,在Windows系统下维护ASM磁盘提供存储设备的Oracle数据库时,该如何确定ASM磁盘对应的磁盘设备呢?

1 在操作系统层面看到下述磁盘信息,Disk 0是操作系统盘,Disk 1,Disk 2是2块ASM磁盘:

wps_clip_image-11545

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之后,也可以看到下述信息:

wps_clip_image-11662

进而,均可以可定path为\\.\ORCLDISKORADATA0的ASM磁盘对应于OS上的Disk2。

4 通过上述第3步骤移除磁盘的stamp操作之后,看到的信息如下:

wps_clip_image-11786

此时,已经从ASM实例里看不到ASM磁盘的信息了。

5 最终,从OS级别删除磁盘Disk 2的卷信息,分区信息之后,如下:

wps_clip_image-11848

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

Device ‘xx’ is already labeled for ASM disk 的故障处理

简单记录一则在Linux平台上创建ASM磁盘时遭遇:

Device “/dev/sdf1” is already labeled for ASM disk “”

的错误!

1 故障现象:

[root@node1 ~]# /usr/sbin/oracleasm listdisks 
ASMDISK1
ASMDISK2
[root@node1 ~]# /usr/sbin/oracleasm createdisk asmdisk3 /dev/sdf1
Device "/dev/sdf1" is already labeled for ASM disk ""
[root@node1 ~]# ll /dev/oracleasm/disks/
total 0
brw-rw---- 1 oracle oinstall 8, 49 Dec 25 16:53 ASMDISK1
brw-rw---- 1 oracle oinstall 8, 65 Dec 25 16:53 ASMDISK2
[root@node1 ~]#

2 故障处理:

通过查看/etc/blkid/blkid.tab文件,确实看到设备/dev/sdf1已经是一块ASM磁盘,只是ASM卷标为空。

[root@node1 ~]# cat /etc/blkid/blkid.tab
/dev/sda2
/dev/sda1
/dev/cdrom
/dev/hdc
/dev/sde1
/dev/sdd1
/dev/sdf1
[root@node1 ~]# 

通过/usr/sbin/oracleasm renamedisk命令来重命名磁盘:

[root@node1 ~]# /usr/sbin/oracleasm renamedisk -f /dev/sdf1 asmdisk3
Writing disk header: done
Instantiating disk "ASMDISK3": done
[root@node1 ~]# /usr/sbin/oracleasm listdisks 
ASMDISK1
ASMDISK2
ASMDISK3
[root@node1 ~]# ll /dev/oracleasm/disks/
total 0
brw-rw---- 1 oracle oinstall 8, 49 Dec 25 16:53 ASMDISK1
brw-rw---- 1 oracle oinstall 8, 65 Dec 25 16:53 ASMDISK2
brw-rw---- 1 oracle oinstall 8, 81 Dec 25 17:16 ASMDISK3
[root@node1 ~]#

且,重启操作系统之后:

[root@node1 ~]# cat /etc/blkid/blkid.tab
/dev/sda2
/dev/sda1
/dev/cdrom
/dev/hdc
/dev/sdf1
/dev/sde1
/dev/sdd1
[root@node1 ~]# 

3 故障原因:

之前,的确已经将设备/dev/sdf1创建成了ASM磁盘,然后,在操作系统级别将/dev/sdf硬盘的第1个分区sdf1直接删除后,重新创建了分区sdf1之后,再想将/dev/sdf1创建为ASM磁盘时,就遭遇到上述的错误信息!

4 如何避免:

正确的步骤,先通过/usr/sbin/oracleasm deletedisk命令来删除对应的ASM磁盘,然后在操作系统级别删除对应的硬盘分区,重新创建新分区之后,再在该硬盘分区上通过/usr/sbin/oracleasm createdisk命令创建ASM磁盘时,就不会出现上述错误了!

Oracle Grid Infrastructure包含哪些组件及其新特性?

Oracle 从11gR2开始,推出Grid Infrastructure[我个人习惯称之为Grid软件],那么Grid Infrastructure究竟有哪些优势,又包含哪些组件呢

首先,Grid Infrastructure包含下述组件

ASM:Automatic Storage Management;

ACFS:ASM Cluster File System;

ACFS snapshot;

Oracle Clusterware;

Oracle Restart。

其次,Grid Infrastructure 又有什么新特性呢?

探其优势,简单总结,从其包含的组件可知,如果在RAC环境下,无需单独安装clusterware软件,只需安装grid即可。如果在单实例环境下,数据库的存储如果想用ASM的话,那么就必须得先安装grid软件,并创建ASM磁盘组之后,方可安装oracle软件,在创建数据库的时候,存储才可以选择放在ASM磁盘组上。

另:对于非RAC架构下的Standalone 数据库,其Oracle Restart可以接管包括数据库服务、数据库实例、ASM实例、ASM磁盘组、数据库监听等组件的故障处理。举例来说,假设数据库在运行过程中,如果监听进程意外终止、或者数据库意外crash掉,那么Oracle Restart将接管并重启这些服务。

最后,11gR2的ASM同之前的ASM相比,又有什么增强呢?

如下图:

grid_asm

从上,看到在11gR2之前[包含11gR1及10g],ASM位于操作系统层面之上,ASM为数据库访问存储设备提供驱动,然后为上层的数据库提供存储,最后数据库供最上层的应用系统访问。

而从11gR2开始,看到ASM依然位于OS层面之上,和ASM同层的多出来个ADVM[ASM Dynamic Volume Manager]。往上,位于同层的除了database之外,还有ACFS[ASM Cluster File System]和ASM为第三方文件系统提供支持。

补充,简单描述ASM disk,ASM diskgroup,ADVM,ACFS的关系?

一块儿物理硬盘或物理硬盘的一个分区或存储设备上的LUN或一个LVM均可以被创建成一块ASM disk,一块或多块儿ASM磁盘在逻辑上可以被用来创建成一个ASM磁盘组。

有了ASM diskgroup之后,可以通过图形界面工具[ASMCA、OEM]或者命令行工具[ASMCMD、SQL*PLUS]在磁盘组上创建出一个或多个ASM Dynamic Volume 。ADVM上的卷设备文件对于操作系统而言被作为块设备来识别,其位于/dev/asm/<volume name>-nnn。

使用mkfs命令就可以在ADVM上创建ACFS类型的文件系统了[命令如:mkfs -t acfs -n advm-volume-name /dev/asm/<volume name>-nnn],最后类似于在操作系统上挂载其它设备一样,可以将/dev/asm/<volume name>-nnn直接挂在到操作系统上使用了。