裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备。它由应用程序负责对
它进行读写操作。不经过文件系统的缓冲,是不被操作系统直接管理的设备。由于跨过操作系统管理,使得I/O效率更高。在基于SUSE Linux
10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,依然需要为其使用裸设备方式。SUSE
Linux裸设备的配置与其他的Linux稍有差异,下面将具体描述。
- 1、先对磁盘进行分区,sdd如下面的方法炮制
- #下面的示例中使用sdc和sdd来用作裸设备,一块用于ocr,一块用于votingdisk
- bo2dbp:~#fdisk/dev/sdc
- DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel
- BuildinganewDOSdisklabel.Changeswillremaininmemoryonly,
- untilyoudecidetowritethem.Afterthat,ofcourse,theprevious
- contentwon'tberecoverable.
- Warning:invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite)
- Command(mforhelp):n
- Commandaction
- eextended
- pprimarypartition(1-4)
- p
- Partitionnumber(1-4):
- Valueoutofrange.
- Partitionnumber(1-4):
- Valueoutofrange.
- Partitionnumber(1-4):1
- Firstcylinder(1-200,default1):
- Usingdefaultvalue1
- Lastcylinderor+sizeor+sizeMor+sizeK(1-200,default200):
- Usingdefaultvalue200
- Command(mforhelp):w
- Thepartitiontablehasbeenaltered!
- Callingioctl()tore-readpartitiontable.
- Syncingdisks.
- 2、分区后的结果
- bo2dbp:~#fdisk-l/dev/sdc
- Disk/dev/sdc:209MB,209715200bytes
- 64heads,32sectors/track,200cylinders
- Units=cylindersof2048*512=1048576bytes
- DeviceBootStartEndBlocksIdSystem
- /dev/sdc1120020478483Linux
- bo2dbp:~#fdisk-l/dev/sdd
- Disk/dev/sdd:209MB,209715200bytes
- 64heads,32sectors/track,200cylinders
- Units=cylindersof2048*512=1048576bytes
- DeviceBootStartEndBlocksIdSystem
- /dev/sdd1120020478483Linux
- 3、配置裸设备
- bo2dbp:~#vi/etc/raw
- #/etc/raw
- #
- #sampleconfigurationtobindrawdevices
- #toblockdevices
- #
- #Theformatofthisfileis:
- #raw<N>:<blockdev>
- #
- #example:
- #---------
- #raw1:hdb1
- #
- #thismeans:bind/dev/raw/raw1to/dev/hdb1
- #
- #...
- #Addnewrawdevices
- raw1:sdc1
- raw2:sdd1
- 4、启动裸设备
- bo2dbp:~#rcrawstart
- bind/dev/raw/raw1to/dev/sdc1...done
- bind/dev/raw/raw2to/dev/sdd1...done
- 5、配置裸设备随系统启动
- bo2dbp:~#chkconfigraw
- rawon
- #修改裸设备的权限与所有者,尽管该操作会修改,但重启之后将失效。永久修改见第7点
- bo2dbp:~#chownoracle:dba/dev/raw/raw[1-2]
- bo2dbp:~#chmod660/dev/raw/raw[1-2]
- 6、测试裸设备
- bo2dbp:~#ddif=/dev/zeroof=/dev/raw/raw1bs=1024kcount=200
- dd:writing`/dev/raw/raw1':Nospaceleftondevice
- 200+0recordsin
- 199+0recordsout
- 209698816bytes(210MB)copied,2.59567seconds,80.8MB/s
- 7、修改裸设备启动后权限及所有者
- #使用root用户修改/etc/udev/rules.d/50-udev-default.rules,确保raw设备的权限GROUP="dba",MODE="660",OWNER="oracle"
- #将其中包含KENREL=="raw"的记录修改为如下
- KERNEL=="raw[0-9]*",SUBSYSTEM=="raw",NAME="raw/%k",GROUP="dba",MODE="640",OWNER="oracle"
- 8、确认配置成功
- #重启之后的状态#Author:RobinsonChengBlog:http://blog.csdn.net/robinson_0612
- bo2dbp:~#ls-hltr/dev/raw
- total0
- crw-rw----1rootdisk162,0Sep1910:22rawctl
- crw-rw----1oracledba162,1Sep1910:22raw1
- crw-rw----1oracledba162,2Sep1910:22raw2
- bo2dbs:~#/usr/sbin/raw-qa
- /dev/raw/raw1:boundtomajor8,minor33
- /dev/raw/raw2:boundtomajor8,minor49
更多参考
Linux/Unix shell sql 之间传递变量
Linux/Unix shell 脚本中调用SQL,RMAN脚本