转:Oracle下创建ASM磁盘总结
Oracle下创建ASM磁盘总结
文章转载:https://blog.csdn.net/okhymok/article/details/78791841?utm_source=blogxgwz1
2.3 方法三:udev方式
又可以分为2种方式,采用uuid来绑定或采用raw来绑定,采用uuid需要添加多块磁盘,而采用raw方式不需要添加多个磁盘。
2.3.1 udev下的方法一:uuid方式
1、RedHat 5 udev SCSI Rules配置
1 获取需要绑定为ASM Disk的磁盘uuid
# /sbin/scsi_id -g -u -s /block/sdb
SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_
2 新建/etc/udev/rules.d/99-oracle-asmdevices.rules,增加以下内容
KERNEL=="sd*1",BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_",NAME="asm-disk1",OWNER="oracle",GROUP="dba",MODE="0660"
3 重启服务:
[root@rac1 ~]# start_udev
Starting udev: [ OK ]
2、RedHat 6 udev SCSI Rules
1 编辑/etc/scsi_id.config文件,如果该文件不存在,则创建该文件,添加如下行:
options=--whitelisted --replace-whitespace
备注:在测试中,此步骤可以省略
2 获取需要绑定为ASM Disk的磁盘uuid,比如我们要使用/dev/sdc作为ASM磁盘,那么:
# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
1ATA_VBOX_HARDDISK_VB36a9e548-1838194a
或
# /sbin/scsi_id -g -u -d /dev/sdb
SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_
3 新建/etc/udev/rules.d/99-oracle-asmdevices.rules增加以下内容
KERNEL=="sd*1",BUS=="scsi",PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent",RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_",NAME="asm-disk1",OWNER="oracle",GROUP="dba",MODE="0660"
或
KERNEL=="dm-*",PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="3600c0ff00015c7b70253c05001000000",OWNER:="grid",GROUP:="oinstall"
KERNEL=="dm-*",PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="3600c0ff00015c7b72553c05001000000",OWNER:="grid",GROUP:="oinstall"
KERNEL=="dm-*",PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="3600c0ff00015c7b77165c05001000000",OWNER:="grid",GROUP:="oinstall"
KERNEL=="dm-*",PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="3600c0ff00015c7b73753c05001000000",OWNER:="grid",GROUP:="oinstall"
KERNEL=="dm-*",PROGRAM="scsi_id --page=0x83 --whitelisted --device=/dev/%k",RESULT=="3600c0ff00015c7b78065c05001000000",OWNER:="grid",GROUP:="oinstall"
或
KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600c0ff00015c7b70253c05001000000",NAME="asmocrvote01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600c0ff00015c7b77165c05001000000",NAME="asmdata01", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600c0ff00015c7b73753c05001000000",NAME="asmdata02", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd*",BUS=="scsi",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="3600c0ff00015c7b72553c05001000000",NAME="asmfra01",OWNER="grid",GROUP="asmadmin",MODE="0660"
4 重启服务:
[root@rac1 ~]# start_udev
Starting udev: [ OK ]
一、配置udev绑定的scsi_id
注意以下两点:
首先切换到root用户下:
①不同的操作系统scsi_id命令的位置不同。
[root@rhel5 ~]# cat /etc/issue
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Kernel \r on an \m
[root@rhel5 ~]# which scsi_id
/sbin/scsi_id
②编辑/etc/scsi_id.config文件,如果该文件不存在,则创建该文件并添加如下行:
[root@localhost ~]# vim /etc/scsi_id.config
options=--whitelisted --replace-whitespace
5.3如果是使用VMware虚拟机,直接输入scsi_id命令可能无法获取id,需修改VMware文件参数,这一步如果在添加磁盘的时候做过这一步的话就可以跳过了,直接获取uuid即可
[root@localhost ~]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
[root@localhost ~]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
D:\VMs\Oracle Database 11gR2\Oracle Database 11gR2.vmx
使用文本编辑器编辑该文件,在尾部新增一行参数:
disk.EnableUUID="TRUE"
保存文件,重新启动虚拟机。这里注意修改文件的时候一定要在关机的状态下修改,或者scsi_id -g -u /dev/sdc来获得uuid,-g -u参数在rhel6以后已经不用了
[root@localhost share]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
36000c29fbe57659626ee89b4fba07616
[root@localhost share]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
36000c29384cde894e087e5f0fcaa80f4
[root@localhost share]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdd
36000c29022aee23728231ed9b1f9743d
[root@localhost share]# scsi_id --whitelisted --replace-whitespace --device=/dev/sde
36000c2938f431664218d1d2632ff1352
二、创建并配置udev rules文件
[root@localhost ~]# vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29fe0fc917d7e9982742a28ce7c",NAME="asm-diskb",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c293ffc0900fd932348de4b6baf8",NAME="asm-diskc",OWNER="grid",GROUP="asmadmin",MODE="0660"
根据步骤5获取的ID修改RESULT值
这里需要注意,一个KERNEL就是一行,不能换行的,我之前就是犯了这个错误的
添加4块硬盘:
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29346c1344ffb26f0e5603d519e",NAME="asm-diskb",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29d08ee059a345571054517cd03",NAME="asm-diskc",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c295037a910bfb765af8f400aa07", NAME="asm-diskd",OWNER="grid",GROUP="asmadmin",MODE="0660"
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2982bda048f642acd3c429ec983", NAME="asm-diske",OWNER="grid",GROUP="asmadmin",MODE="0660"
注意:这里的GROUP="asmadmin",最好修改成GROUP="asmdba",不然最后可能用dbca创建数据库实例的时候找不见磁盘组。
三、udevadm进行测试
用udevadm进行测试,注意udevadm命令不接受/dev/sdc这样的挂载设备名,必须是使用/sys/block/sdc这样的原始设备名。
udevadm test /sys/block/sdcudevadm info --query=all --path=/sys/block/sdcudevadm info --query=all --name=asm-disk1
在显示中,有类似如下输出,表示测试正确,/dev/sdc设备在udev启动以后将会绑定为/dev/asm-disk1:
udevadm_test: UDEV_LOG=6
udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:0d.0/host4/target4:0:0/4:0:0:0/block/sdcudevadm_test: MAJOR=8
udevadm_test: MINOR=32
udevadm_test: DEVNAME=/dev/asm-disk1
udevadm_test: DEVTYPE=disk
udevadm_test: ACTION=add
udevadm_test: SUBSYSTEM=block
四、添加完成后,重启udev,不同Linux发行版本重启方式不一样。
该步骤慢一点,大约可能需要30秒左右吧,等等等等。。。。。。
[root@localhost ~]# start_udev
Starting udev: [ OK ]
五、查看绑定的asm,如果此时还是看不到asm disk,请重启操作系统后再查看。
[root@localhost ~]# ll /dev/asm*
brw-rw---- 1 grid asmadmin 8, 17 Oct 17 14:26 /dev/asm-diskb
brw-rw---- 1 grid asmadmin 8, 33 Oct 17 14:26 /dev/asm-diskc
2.3.2 udev下的方法二:raw方式
a.配置裸设备映射,修改/etc/udev/rules.d/60-raw.rules文件
使用root帐户修改/etc/udev/rules.d/60-raw.rules 按如下方式添加磁盘
[root@oradb ~]# cat /etc/udev/rules.d/60-raw.rules --查看添加的内容
ACTION=="add",KERNEL=="/dev/sdb8",RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="24",RUN+="/bin/raw /dev/raw/raw8 %M %m"
ACTION=="add",KERNEL=="/dev/sdb9",RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="25",RUN+="/bin/raw /dev/raw/raw9 %M %m"
ACTION=="add",KERNEL=="raw8",OWNER="grid",GROUP="asmadmin",MODE="0660"
ACTION=="add",KERNEL=="raw9",OWNER="grid",GROUP="asmadmin",MODE="0660"
[root@oradb ~]# start_udev #重启udev服务
Starting udev: [ OK ]
[root@rhel5 ~]# raw -qa
/dev/raw/raw1: bound to major 7, minor 1
/dev/raw/raw2: bound to major 7, minor 2
/dev/raw/raw3: bound to major 7, minor 3
/dev/raw/raw4: bound to major 7, minor 4
/dev/raw/raw5: bound to major 7, minor 5
/dev/raw/raw6: bound to major 8, minor 22
/dev/raw/raw7: bound to major 8, minor 23
/dev/raw/raw8: bound to major 8, minor 24
/dev/raw/raw9: bound to major 8, minor 25
[root@rhel5 ~]# ll /dev/raw*
crw------- 1 root root 162, 0 Dec 30 14:36 /dev/rawctl
/dev/raw:
total 0
crw------- 1 oracle dba 162, 1 Dec 30 15:29 raw1
crw------- 1 oracle dba 162, 2 Dec 30 15:29 raw2
crw------- 1 oracle dba 162, 3 Dec 30 14:36 raw3
crw------- 1 oracle dba 162, 4 Dec 30 14:36 raw4
crw------- 1 oracle dba 162, 5 Dec 30 14:36 raw5
crw------- 1 oracle dba 162, 6 Dec 30 15:29 raw6
crw------- 1 oracle dba 162, 7 Dec 30 15:29 raw7
crw-rw---- 1 grid asmadmin 162, 8 Dec 30 15:28 raw8
crw-rw---- 1 grid asmadmin 162, 9 Dec 30 15:28 raw9
SQL> create diskgroup DG2 external redundancy disk '/dev/raw/raw8';
Diskgroup created.
一、裸设备概述
裸设备:也叫裸分区(原始分区)是一种没有经过格式化,不被Unix/Linux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。
字符设备:对字符设备的读写不需要通过OS的buffer。它不可被文件系统mount。
块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。
这个与linux的版本相关,在旧版本中,最多只可以有256个裸设备,Linux 4下做多可以绑定81Array2个裸设备。但是在linux下,最多只能有255个分区,
所以如果用裸设备绑定分区,最多只能绑定255个裸设备。如果是用lvm,则没有这个限制。
Linux下单个磁盘最多可以有15个分区。3个主分区 + 1个扩展分区 + 11个逻辑分区。
建议的分区方法是:先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成11个逻辑分区。
注意,裸设备不要绑定在扩展分区上。
linux下如果需要使用裸设备,则需要手工进行绑定,unix下则不用。
因为Unix中每一个块设备都会有一个对应的字符设备用于非缓存(unbuffered)I/O,这就是他对应的裸设备了。而Linux中rawio的则实现了一套非绑定(unbound)的
裸设备/dev/rawN或者/dev/raw/rawN和一个控制设备/dev/rawct用来把他们绑定到块设备上。所以当需要使用一个裸设备的时候,就需要把他和一个真实存在的块
设备对应起来,这一个步骤实际上就是完成了Unix里的自动对应一个非缓存字符设备。
major和minor device number
在unix/linux系统中,一切都是文件。所有硬盘、软盘、键盘等设备都用文件来代表,对应着/dev下面的文件。对于应用程序来说,可以像对待普通文件一样打开、
关闭、读写这些设备文件。但是这种文件名,比如/dev/sda、/dev/raw/raw1都是用户空间名称,OS Kernel根本不知道这个名称指的是什么。在内核空间是通过
major、minor device number来区分设备的。
major device number可以看作是设备驱动程序,被同一设备驱动程序管理的设备有相同的major device number.这个数字实际是Kernel中device driver table的
索引,这个表保存着不同设备驱动程序。而minor device number用来代表被访问的具体设备。也就是说Kernel根据major device number 找到设备驱动程序,然后
再从minor device number获得设备位置等属性。所有这些major device number 是已经预先分配好的。详细信息可以从http://www.lanana.org/docs/device-list/devices-2.6+.txt
查看。比如裸设备是162,scsi块设备是8
/etc/udev/rules.d/60-raw.rules
Redhat平台对raw设备的配置在redhat 5之后有了变化。在redhat 5之前,直接配置/etc/sysconfig/rawdevices件,通过/etc/init.d/rawdevices来管理raw设备的启动和关 闭。
在Redhat 5之后,原来的raw设备接口已经取消了,redhat 5中通过udev规则进行配置。 要配置,需要编辑/etc/udev/rules.d/60-raw.rules这个文件。
cat /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add",KERNEL=="sda",RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add",ENV{MAJOR}=="8",ENV{MINOR}=="1",RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
其中
ACTION=="add", KERNEL="<device name>", RUN+="raw /dev/raw/rawX %N"
配置设备名称,用你需要绑定的设备名称替换 <device name>(如:/dev/sda1),X为裸设备号
主/次号码:
ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M %m"
"A" 和 "B" 是设备的主/次号码,X是系统使用的raw设备号码。
个人对redhat管理raw的过程理解为: 在redhat 5中,是通过udev来管理raw设备的,而udev是通过 MAJOR和MINOR来识别 raw设备 。 故需要将设备号和裸设备号进行绑定,
而主设备号和次设备号可以自行指定或者由系统自动分配。 根据red hat的官方文档中关于raw.rule的示例中说KERNEL==..或ENV{MAJOR}...只需要任意配置一个就可以,
但有些网友经过试验,验证必须二者同时配置才可以。
配置/etc/udev/rules.d/60-raw.rules文件
查看磁盘分区情况
# fdisk -l /dev/sdb
Disk /dev/sdb: 4880 MB, 4880072704 bytes
255 heads, 63 sectors/track, 593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 25 200781 83 Linux
/dev/sdb2 26 50 200812+ 83 Linux
配置/etc/udev/rules.d/60-raw.rules文件
# grep -v ^# /etc/udev/rules.d/60-raw.rules
ACTION=="add",KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add",KERNEL=="sdb2",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add",ENV{MAJOR}=="3",ENV{MINOR}=="2",RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add",ENV{MAJOR}=="7",ENV{MINOR}=="2",RUN+="/bin/raw /dev/raw/raw2 %M %m"
启动raw设备
# start_udev
Starting udev: [ OK ]
查看配置情况
# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
这里笔者不清楚为什么主设备号和复设备号并不和我在/etc/udev/rules.d/60-raw.rules指定的一样,望了解的读者告知,系统内核信息如下
# uname -a
Linux rac1 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
可以通过如下方式指定 主设备号和复设备号
# raw /dev/raw/raw1 1 1
/dev/raw/raw1: bound to major 1, minor 1
raw /dev/raw/raw[n] /dev/xxx
其中n的范围是0-8191。raw目录不存在的话会被自动创建。执行这个命令,就会在/dev/raw下生成一个对应的raw[n]文件用命令方式绑定裸设备在系统重启后会失效。
删除裸设备
# raw /dev/raw/raw2 0 0
/dev/raw/raw2: bound to major 0, minor 0
# raw -qa
/dev/raw/raw1: bound to major 1, minor 1
以上设置必须同时修改/etc/udev/rules.d/60-raw.rules才能保证重启后生效,否则重启后系统会重新读取/etc/udev/rules.d/60-raw.rules
如需设置raw设备的用户和权限信息,可在/etc/udev/rules.d/60-raw.rules文件里添加如下信息:
ACTION=="add",KERNEL=="raw1",OWNER="dave",GROUP="tianlesoftware",MODE="660"
如果有多个raw设备,可以写成:
ACTION=="add",KERNEL=="raw[1-4]",OWNER="dave",GROUP="tianlesoftware",MODE="660"
# chown oracle:oinstall /dev/raw/raw[1-4]
# chmod 775 /dev/raw/raw[1-4]
注意:在内核2.6.9-89.5AXS2之前使用/etc/sysconfig/rawdevices和/etc/udev/permissions.d/50-udev.permissions进行raw设备的配置和权限管理。在内核 2.6.18-128.7AXS3以后则使用了本文介绍的 /etc/udev/rules.d/60-raw.rules进行raw设备的管理
确定裸设备的大小比较笨的办法是,找出看裸设备对应的是那个实际的块设备,然后用fdisk -l /dev/[h,s]dXN看那个块设备的大小就好了。比较简单的办法是用blockdev命令来计算,如:
# blockdev --getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一个OS BLOCK大小是512字节,所以11718750*512/1024/1024= 5722(m) 就是裸设备的大小。
使用裸设备作为oracle的数据文件的注意事项
1、一个裸设备只能放置一个数据文件
2、数据文件的大小不能超过裸设备的大小
如果是日志文件,则裸设备最大可用大小=裸设备对应分区大小 - 1 * 512 (保留一个redo lock)
如果是数据文件,则裸设备最大可用大小=裸设备对应分区大小 - 2 * db_block_size(保留两个block)为了简单起见,对所有的文件设置称比裸设备小1M即可。
3、数据文件最好不要设置称自动扩展,如果设置称自动扩展,一定要把maxsize设置设置为比裸设备小
4、linux下oracle不能直接把逻辑卷作为裸设备,也要进行绑定。unix下就不需要。
2.4 方法四:Asmlib方式
asmlib是oracle提供的软件,不支持rhel6了,具体参考:
http://blog.itpub.net/26736162/viewspace-1205206/
2.4.1 系统版本号
[root@rhel5 ~]# uname -rm
2.6.18-194.el5 x86_64
2.4.2 Oracle asmlib下载
1. 在官网(www.oracle.com)的搜索中输入asmlib搜索后可以直接找到
http://www.oracle.com/technetwork/server-storage/linux/asmlib/index-101839.html
选择对应的版本 rhel5
去下载如下asm的三个rpm软件包(本机器下载的是标红的三个软件包,安装包一定要下载正确的版本否则导致后续配置无法进行),注意32位和64的差别:
Intel EM64T (x86_64) Architecture
Library and Tools
oracleasm-support-2.1.8-1.el5.x86_64.rpm
oracleasmlib-2.0.4-1.el5.x86_64.rpm
Drivers for kernel 2.6.18-194.el5
oracleasm-2.6.18-194.el5xen-2.0.5-1.el5.x86_64.rpm
oracleasm-2.6.18-194.el5debug-2.0.5-1.el5.x86_64.rpm
oracleasm-2.6.18-194.el5-debuginfo-2.0.5-1.el5.x86_64.rpm
2.4.3 上传并安装上述的三个rpm软件包:
[root@rhel5 tmp]# ll oracleasm*
-rw-r--r-- 1 root root 137486 Dec 30 10:28 oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64.rpm
-rw-r--r-- 1 root root 14176 Jun 2 2013 oracleasmlib-2.0.4-1.el5.x86_64.rpm
-rw-r--r-- 1 root root 90225 Jun 2 2013 oracleasm-support-2.1.8-1.el5.x86_64.rpm
[root@rhel5 tmp]# rpm -ivh oracleasm*.rpm
warning: oracleasm-2.6.18-194.el5-2.0.5-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [ 33%]
2:oracleasm-2.6.18-194.el########################################### [ 67%]
3:oracleasmlib ########################################### [100%]
验证安装的包
[root@rhel5 ~]# rpm -qa | grep asm
oracleasm-2.6.18-194.el5-2.0.5-1.el5
oracleasmlib-2.0.4-1.el5
oracleasm-support-2.1.8-1.el5
2.4.4 配置ASM
[root@rhel5 tmp]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: grid
Default group to own the driver interface []: asmadmin
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
如果配置错误,可以重新配置:
[root@rhel5 tmp]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface [oracle]: grid
Default group to own the driver interface [oinstall]: asmadmin
Start Oracle ASM library driver on boot (y/n) [y]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
2.4.5 系统添加磁盘
在Vmware分配几个空闲的磁盘用于创建ASM磁盘,建议使用不同的磁盘控制器
下面使用个磁盘来组建ASM磁盘组,分别为sdd,sde,sdf,sdg
分别对个磁盘进行分区,列出sdd的分区样例,其余如法炮制
[root@oradb ~]# fdisk /dev/sdd
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 or +size or +sizeM or +sizeK (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.
系统添加一块硬盘sdb,然后进行分区 fdisk /dev/sdb ,分区之后:
[root@rhel5 ~]# ll /dev/sdb*
brw-r----- 1 root disk 8, 16 Dec 30 10:54 /dev/sdb
brw-r----- 1 root disk 8, 17 Dec 30 10:59 /dev/sdb1
brw-r----- 1 root disk 8, 18 Dec 30 11:00 /dev/sdb2
brw-r----- 1 root disk 8, 19 Dec 30 11:00 /dev/sdb3
brw-r----- 1 root disk 8, 20 Dec 30 11:00 /dev/sdb4
[root@rhel5 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk: [ OK ]
[root@rhel5 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdb2
Marking disk "VOL2" as an ASM disk: [ OK ]
[root@rhel5 ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdb3
Marking disk "VOL3" as an ASM disk: [ OK ]
[root@rhel5 ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sdb4
Marking disk "VOL4" as an ASM disk: [ OK ]
[root@rhel5 oracle]# ll /dev/oracleasm/disks/*
brw-rw---- 1 grid asmadmin 8, 17 Dec 30 10:59 /dev/oracleasm/disks/VOL1
brw-rw---- 1 grid asmadmin 8, 18 Dec 30 11:00 /dev/oracleasm/disks/VOL2
brw-rw---- 1 grid asmadmin 8, 19 Dec 30 11:00 /dev/oracleasm/disks/VOL3
brw-rw---- 1 grid asmadmin 8, 20 Dec 30 11:00 /dev/oracleasm/disks/VOL4
[root@rhel5 ~]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
[root@rhel5 ~]# /etc/init.d/oracleasm deletedisk VOL4
Removing ASM disk "VOL4": [ OK ]
2.4.6 grid软件安装完毕后配置asm_diskstring路径
[grid@rhel5 ~]$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.3.0 Production on Tue Dec 30 12:09:19 2014
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> alter system set asm_diskstring='/dev/raw/*','/dev/oracleasm/disks/VOL*';
System altered.
SQL> show parameter asm_diskstring
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_diskstring string /dev/raw/*, /dev/oracleasm/disks/VOL*
SQL> set line 9999
SQL> SELECT a.group_number,disk_number,mount_status,a.name,path FROM v$asm_disk a;
GROUP_NUMBER DISK_NUMBER MOUNT_S NAME PATH
------------ ----------- ------- ------------------------------
0 0 CLOSED /dev/raw/raw5
0 1 CLOSED /dev/raw/raw4
0 2 CLOSED /dev/raw/raw3
0 3 CLOSED /dev/raw/raw2
0 4 CLOSED /dev/oracleasm/disks/VOL4
0 5 CLOSED /dev/oracleasm/disks/VOL3
0 6 CLOSED /dev/oracleasm/disks/VOL2
0 7 CLOSED /dev/oracleasm/disks/VOL1
1 0 CACHED DATA_0000 /dev/raw/raw1
9 rows selected.
磁盘搜索路径问题
SQL> create diskgroup DG1 normal redundancy disk 'ORCL:VOL1','ORCL:VOL2';
create diskgroup DG1 normal redundancy disk 'ORCL:VOL1','ORCL:VOL2'
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15031: disk specification 'ORCL:VOL2' matches no disks
ORA-15031: disk specification 'ORCL:VOL1' matches no disks
使用oraclasm创建磁盘后,缺省会在/dev/oracleasm/disks目录下添加刚刚创建的磁盘映射。修改asm_diskstring修改路径之后再次创建即可
SQL> alter system set asm_diskstring='/dev/oracleasm/disks/VOL*'
2.4.7 测试
SQL> drop diskgroup dg1;
Diskgroup dropped.
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;
NAME STATE FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
--------------- ----------- ------- ----------------------- --------------
DATA MOUNTED 941 0 941
SQL> create diskgroup DG1 normal redundancy failgroup FG1 disk '/dev/oracleasm/disks/VOL1' name VOL1 failgroup FG2 disk '/dev/raw/raw2' name VOL2;
Diskgroup created.
SQL> select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;
NAME STATE FREE_MB REQUIRED_MIRROR_FREE_MB USABLE_FILE_MB
------- -------- ------- ----------------------- --------------
DATA MOUNTED 941 0 941
DG1 MOUNTED 1862 0 931
2.4.8 日志
tail -f /var/log/oracleasm
2.4.9 报错:
一、ASM: Device is already labeled for ASM disk
当一块磁盘或分区已经被一个DataGroup用过,此时想用这块磁盘或分区重新生成Asmlib生成Oracle 磁盘设备时即会报标题的错。
类似如下:
[oracle@v vfs]$ /etc/init.d/oracleasm createdisk VOL1 /dev/sda1
Marking disk "/dev/sda1" as an ASM disk: asmtool:
Device "/dev/sda1" is already labeled for ASM disk "" [FAILED]
[oracle@v vfs]$ /etc/init.d/oracleasm deletedisk VOL1
Removing ASM disk "VOL1" [FAILED]
解决问题其实很简单,把磁盘头清一下就可以了:
[oracle@v vfs]$ dd if=/dev/zero of=<your_raw_device> bs=1024 count=100
现在操作就该正常了:
oracle@vvfs$ dd if=/dev/zero of=/dev/sda1 bs=1024 count=100
100+0 records in
100+0 records out
[oracle@v vfs]$ /etc/init.d/oracleasm createdisk VOL /dev/sda1
Marking disk "/dev/sda1" as an ASM disk: [ OK ]
3 总结
本文提到的4种方法各有优缺点,其中方法二和方法四是rhel6之前的版本支持,方法三需要添加多块磁盘,方法一最直接,如若网友有兴趣,可以列个表格来比对他们的区别。
注意:每一种方法创建asm磁盘后都需要修改asm_diskstring的路径,否则不能找到新添加的磁盘:
SQL> alter system set asm_diskstring='/dev/raw/*','/dev/oracleasm/disks/VOL*';
转:Oracle下创建ASM磁盘总结的更多相关文章
- 对oracle用户创建asm磁盘
--root用户执行vi /etc/sysctl.conf #Install oracle settingfs.aio-max-nr = 1048576fs.file-max = 6815744#ke ...
- 用asmlib方式创建oracle集群ASM磁盘(oracleasm)
创建asm磁盘的几种方式 创建asm方式很多主要有以下几种 1.Faking方式 2.裸设备方式 3.udev方式(它下面有两种方式) 3.1 uuid方式 3.2 raw方式(裸设备方式) 4.as ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.5.安装Grid,创建ASM磁盘组空间不足
因之前分区时,分区的Last cylinder的值选了“1”,导致创建磁盘组空间不足.解决办法是先删除分区,重新创建分区并删除ASM磁盘,然后重建ASM磁盘 1. 先删除分区,重新创建分区: 1)查询 ...
- Linux下搭建Oracle11g RAC(8)----创建ASM磁盘组
以grid用户创建ASM磁盘组,创建的ASM磁盘组为下一步创建数据库提供存储. ① grid用户登录图形界面,执行asmca命令来创建磁盘组: ② 进入ASMCA配置界面后,单击Create,创建新的 ...
- 转://如何创建ASM磁盘
1 前言 无论是安装单机版的asm还是rac都离不开ASM磁盘组的创建,创建ASM磁盘组的关键是创建好需要的asm磁盘,发现很多网友安装grid软件和grid实例,都在磁盘的创建这里有很大的问题,本 ...
- 【RAC】 RAC For W2K8R2 安装--创建ASM磁盘组(六)
[RAC] RAC For W2K8R2 安装--创建ASM磁盘组(六) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以 ...
- asmca无法创建ASM磁盘
现象 grid用户使用asmca无法创建asm磁盘,如下图 分析 如图所示,报错说是 Grid Infrastructure 出了问题.那么 Grid Infrastructure 是什么 ? 在安装 ...
- 实验:利用ASMLib创建ASM磁盘
环境:RHEL 6.5 + Oracle 11.2.0.4 RAC(2 nodes) 目的:在实验环境使用ASMLib配置共享ASM磁盘,虽然我们已经不建议使用ASMLib进行绑盘,但是无奈有客户是这 ...
- 99-oracle-asmdevices.rules(udev方式创建asm磁盘)
一.创建asm磁盘的几种方式 创建asm方式很多主要有以下几种 1.Faking方式 2.裸设备方式 3.udev方式(它下面有两种方式) 3.1 uuid方式. 3.2 raw方式(裸设备方式) 4 ...
随机推荐
- 通用Mapper(Mybatis)
1.Mapper的简单介绍 2.Mapper的作用 通用Mapper可以通过Mybatis的拦截器原理,动态的帮我们实现单表的增删改查功能,大大降低了我们的开发成本,减少了我们的工作量. 3.Mapp ...
- myEclipse 2014 破解教程
因为经常在不同电脑里安装配置下载myEclipse,所以干脆记录下来,一直找度娘也是很麻烦的. 此教程仅对myEclipse2014 有效. 破解工具:https://pan.baidu.com/s/ ...
- TCP的三个接收队列
之前对于TCP接收过程中的三个队列的关系之前没搞清楚. 这几天,在同事邱的帮助下,终于把关系理清了,故特此做个笔记. 一.在软中断中加入数据包 tcp_v4_rcv()函数是tcp层收包的入口. in ...
- Eclipse导出apk
http://jingyan.baidu.com/article/7908e85c8dea30af491ad24f.html
- Linux软件安装(一)
软件安装方式: 1. rpm方式 该方式软件安装本质与Windows下安装软件方式一致,就是把软件包里面的二进制代码文件复制到系统指定目录(如 C://program files) 优点:软件安装非常 ...
- phpexcel如何读取excel的数据和如何导出数据到excel
phpexcel如何读取excel的数据和如何导出数据到excel 一.总结 一句话总结:去官网看参考手册和api,或者找中文的博客或者参考手册 1.phpexcel插件如何下载? 其实这些插件不仅可 ...
- hdu 1517 A Multiplication Game(必胜态,必败态)
A Multiplication Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- WCF最简单的一次通信(有部分參考,多爲原創)
不廢話,直接上乾貨 1.先创建一个wcf服务库,是服务类库,远程的lib 2.全部按照默认设置,不修改.然后点发布,会出现一个wcf测试客户端,可以看有没有发布成功. 3.msdn的wcf教程还要求输 ...
- 使用Spring MVC表单标(转)
概述 在低版本的Spring中,你必须通过JSTL或<spring:bind>将表单对象绑定到HTML表单页面中,对于习惯了Struts表单标签的开发者来说,Spring MVC的 ...
- ItelliJ IDEA下载及获取注册码详解
Idea安装很简单: 官网地址下载:https://www.jetbrains.com/idea/ 注册码获取:http://idea.lanyus.com/ 进入此网址,点击“获得注册码”复制使 ...