本文档适用于

Oracle数据库 - 标准版 - 版本10.2.0.1至12.1.0.2 [发行版10.2至12.1]
Oracle数据库 - 企业版 - 版本12.1.0.2至12.1.0.2 [发行版12.1]
本文档中的信息适用于任何平台。

目标

本文档提供了一个示例,说明如何使用udev(非ASMLIB)设置/配置分区化的Linux块设备,并将它们作为ASM的候选成员磁盘分配给ASM。

解决方案

  1. 此示例在OEL 6.3配置上执行(ASM版本11.2.0.3 - 64位):

    1
    2
    3
    4
    5
    6
    7
    [grid@asmlnx2 ~]$ uname -a
    Linux asmlnx2 2.6.39-200.24.1.el6uek.x86_64 #1 SMP Sat Jun 23 02:39:07 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

    [grid@asmlnx2 ~]$ cat /etc/*release*
    Oracle Linux Server release 6.3
    Red Hat Enterprise Linux Server release 6.3 (Santiago)
    Oracle Linux Server release 6.3
  2. 在您的Linux配置中识别新磁盘(例如OEL 6.3或RedHat 6.3):

1
2
3
[grid@asmlnx2 ~]$ ls -l  /dev/xvdv
brw-rw---- 1 root disk 202, 5376 Feb 11 21:31 /dev/xvdv

  1. 在其上创建一个新的磁盘分区:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@asmlnx2 ~]#  fdisk  /dev/xvdv
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xba335ded.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
Using default value 261

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

[root@asmlnx2 ~]# partprobe /dev/xvdv

[root@asmlnx2 ~]# partprobe /dev/xvdv1

[root@asmlnx2 ~]# ls -l /dev/xvdv
brw-rw---- 1 root disk 202, 5376 Feb 11 21:38 /dev/xvdv

[root@asmlnx2 ~]# ls -l /dev/xvdv1
brw-rw---- 1 root disk 202, 5377 Feb 11 21:38 /dev/xvdv1

  1. 按照以下方式在新的分区(“/dev/xvdv1”)上设置新的UDEV规则:
1
2
3
[root@asmlnx2 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="xv*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="360a98000375331796a3f434a55354474", NAME="asmdisk1_udev_p1", ACTION=="add|change", OWNER="grid", GROUP="asmadmin", MODE="0660"

  1. 重新加载并重启udev规则:
1
2
3
4
5
[root@asmlnx2 ~]# udevadm control --reload-rules

[root@asmlnx2 ~]# start_udev
Starting udev: [ OK ]

注意:运行“start_udev”将导致网络热插拔动作应用于主机上每个没有设置HOTPLUG=no的接口配置文件。 这将激活任何没有设置HOTPLUG=no的接口,无论ONBOOT设置如何。 如果您希望避免这种情况,请确保每个ifcfg文件都设置了HOTPLUG=no。

  1. 确保新创建的udev分区设备具有正确的所有权(grid & asmadmin)和权限(brw-rw—-):
1
2
3
[root@asmlnx2 ~]# ls -ltr /dev/asm*
brw-rw---- 1 grid asmadmin 202, 5377 Feb 11 21:47 /dev/asmdisk1_udev_p1

现在,您可以使用它来创建一个新的磁盘组,或者按照以下方式将其添加到现有的磁盘组中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@asmlnx2 ~]# su - grid
[grid@asmlnx2 ~]$ . oraenv
ORACLE_SID = [grid] ? +ASM
The Oracle base has been set to /u01/app/grid
[grid@asmlnx2 ~]$ sqlplus "/as sysasm"

SQL*Plus: Release 11.2.0.3.0 Production on Mon Feb 11 21:56:31 2013

Copyright (c) 1982, 2011, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Automatic Storage Management option


SQL> show parameter asm_diskstring

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string


SQL> alter system set asm_diskstring = '/dev/asmdisk1_udev_p1' scope=both;

System altered.


SQL> show parameter asm_diskstring

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string /dev/asmdisk1_udev_p1



SQL> select path from v$asm_disk where path like '%udev%';

PATH
--------------------------------------------------------------------------------
/dev/asmdisk1_udev_p1


SQL> create diskgroup UDEVDG external redundancy disk '/dev/asmdisk1_udev_p1' ;

Diskgroup created.