轉:Oracle下建立ASM磁盤總結

Oracle下建立ASM磁盤總結html

文章轉載:https://blog.csdn.net/okhymok/article/details/78791841?utm_source=blogxgwz1linux

2.3 方法三:udev方式sql


又能夠分爲2種方式,採用uuid來綁定或採用raw來綁定,採用uuid須要添加多塊磁盤,而採用raw方式不須要添加多個磁盤。
2.3.1 udev下的方法一:uuid方式
一、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 ]

二、RedHat 6 udev SCSI Rules
1 編輯/etc/scsi_id.config文件,若是該文件不存在,則建立該文件,添加以下行:
options=--whitelisted --replace-whitespace
備註:在測試中,此步驟能夠省略vim

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 ]

1、配置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_idoracle

②編輯/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

2、建立並配置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建立數據庫實例的時候找不見磁盤組。
測試

3、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=blockui

4、添加完成後,重啓udev,不一樣Linux發行版本重啓方式不同。
該步驟慢一點,大約可能須要30秒左右吧,等等等等。。。。。。
[root@localhost ~]# start_udev
Starting udev: [ OK ]

5、查看綁定的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.

1、裸設備概述
裸設備:也叫裸分區(原始分區)是一種沒有通過格式化,不被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 * 512 (保留一個redo lock)
若是是數據文件,則裸設備最大可用大小=裸設備對應分區大小 - 2 * db_block_size(保留兩個block)爲了簡單起見,對全部的文件設置稱比裸設備小1M便可。
三、數據文件最好不要設置稱自動擴展,若是設置稱自動擴展,必定要把maxsize設置設置爲比裸設備小
四、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 報錯:
1、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*';

相關文章
相關標籤/搜索