重庆oracle认证培训机构

新闻分类

产品分类

热门关键词

联系我们

企业名称:重庆赛烽达科技有限公司

联系人:程老师

手机:13372708242

邮箱:xqzhang@saifengda.com

网址:www.cqora.com

地址:重庆石桥铺高创锦业17-3

重庆oracle培训课程-Oracle Datafiles & Block Device & Parted & Udev

您的当前位置: 首 页 >> 新闻资讯 >> 常见问题

重庆oracle培训课程-Oracle Datafiles & Block Device & Parted & Udev

发布日期:2018-10-02 作者: 点击:

需求:
1. 使用裸设备作为Oracle数据文件,而且要跳过操作系统或者其它软件提供的卷管理(比如Linux下的LVM)。
2. 由于small datafile限制,有大量磁盘分区需要创建。

以下测试环境操作系统为CentOS 6.0,如果你的操作是RHEL6或者OEL6,也同样适用,如果是RHEL5或者OEL5,那么udev部分的命令是不相同的。但是只需要在操作系统中man udev,查看一下相应的语法即可,思路是相同的。

解决方案:
1. 使用parted命令,脚本式创建多个分区,使用gpt类型分区表,这样可以创建大量primary分区,而如果使用msdos分区,则必须要要创建extend分区,然后再创建logical分区,这样在后面的udev规则文件中,还需要将extend分区排除出去,比较麻烦。

在我的测试环境中,对于/dev/sdc磁盘进行操作,分了11个分区,每个50M。

parted -s /dev/sdc mklabel gpt  parted -s /dev/sdc unit MB mkpart primary 1 50  parted -s /dev/sdc unit MB mkpart primary 50 100  parted -s /dev/sdc unit MB mkpart primary 100 150  parted -s /dev/sdc unit MB mkpart primary 150 200  parted -s /dev/sdc unit MB mkpart primary 250 300  parted -s /dev/sdc unit MB mkpart primary 300 350  parted -s /dev/sdc unit MB mkpart primary 350 400  parted -s /dev/sdc unit MB mkpart primary 400 450  parted -s /dev/sdc unit MB mkpart primary 450 500  parted -s /dev/sdc unit MB mkpart primary 500 550  parted -s /dev/sdc unit MB mkpart primary 550 600

如果在生产环境的Oracle数据库中,block_size=2K的表空间,单个数据文件最大8G,可以使用:

parted -s /dev/sdc unit GB mkpart primary 1 8

2. 设置udev规则。如何在CentOS 6中设置udev,可以参看我之前的文章 - How to use udev for Oracle ASM in Oracle Linux 6

vi /etc/udev/rules.d/99-oracle.rules

添加如下行:

KERNEL=="sd?[1-9]", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c293bd690056ce6834434765d3f4", NAME="oradisk0$number", SYMLINK="mapper/$name", OWNER="oracle",  GROUP="dba", MODE="0660" KERNEL=="sd?1[0-9]", SUBSYSTEM=="block", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c293bd690056ce6834434765d3f4", NAME="oradisk$number", SYMLINK="mapper/$name", OWNER="oracle",  GROUP="dba", MODE="0660"

重启udev服务:

start_udev

然后可以发现/dev/mapper下的链接都成功创建,并且指向规则中定义的块设备名称。

# ls -l /dev/mapper/ total 0 crw-rw----. 1 root root 10, 58 Dec 29 03:29 control lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk01 -> ../oradisk01 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk02 -> ../oradisk02 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk03 -> ../oradisk03 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk04 -> ../oradisk04 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk05 -> ../oradisk05 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk06 -> ../oradisk06 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk07 -> ../oradisk07 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk08 -> ../oradisk08 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk09 -> ../oradisk09 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk10 -> ../oradisk10 lrwxrwxrwx. 1 root root     12 Dec 29 03:29 oradisk11 -> ../oradisk11

注意,此时/dev目录下,sdc1至sdc11设备都不再存在了,但是我们可以通过比较设备的major号和minor号来确认绑定是正确的。

# ls -l /dev/mapper/oradisk01 lrwxrwxrwx. 1 root root 12 Dec 29 03:29 /dev/mapper/oradisk01 -> ../oradisk01 # ls -l /dev/oradisk01 brw-rw----. 1 oracle dba 8, 33 Dec 29 03:29 /dev/oradisk01 # cat /proc/partitions | grep 33    8       33      48128 sdc1

3. 直接使用/dev/mapper/oradisk*作为数据文件
由于在Oracle 10.2.0.2以后,Oracle已经可以用O_DIRECT标志直接打开块设备,而不是像以前版本那样,如果要跳过操作系统缓存直接读写磁盘设备,必须要用使用字符设备。在以前的版本中,因为要使用字符设备,所以才需要用raw命令去将某一个块设备映射为一个裸设备(字符设备)。而在Oracle 10.2.0.2以后则可以直接使用块设备(比如/dev/sdc1,比如udev映射以后的/dev/oradisk01,这些都是块设备),不过,虽然Oracle 10.2.0.2以后,Oracle可以直接读取块设备,但是在Oracle 11g以前,这个特性还不被OUI支持,如果要在OUI中使用,则需要使用符号链接(symbolic links),如我们用udev创建的/dev/mapper/oradisk*。
也就是在Oracle 10.2.0.2以后,Oracle 11g以前,需要使用/dev/mapper/oradisk*这样的符号链接作为数据文件。
在Oracle 11g以后,可以使用符号链接,也可以直接使用/dev/oradisk*作为数据文件。

如果你们认为有更优的最佳实践,欢迎讨论。当然我们也可以使用lvm或者Oracle ASM来处理数据文件的存储,这不在本文讨论范围内。

BTW: 一个有趣的bug?在测试中发现,如果在udev创建完符号链接之后,再使用parted来查看链接的分区情况,则会导致链接消失,而映射前的sdc1设备名重新出现。重启udev服务也无法将链接重新创建,但是用parted重新查看sdc1设备,则链接又重新出现,sdc1又重新消失。求解释。

--正常情况下有符号链接 [root@localhost ~]# ls -l /dev/mapper/oradisk01 lrwxrwxrwx. 1 root root 12 Dec 29 03:29 /dev/mapper/oradisk01 -> ../oradisk01 --映射前的sdc1设备是不存在的 [root@localhost ~]# ls -l /dev/sdc1 ls: cannot access /dev/sdc1: No such file or directory --用parted检查链接,或者检查/dev/oradisk01块设备,效果是一样的 [root@localhost ~]# parted /dev/mapper/oradisk01 GNU Parted 2.1 Using /dev/mapper/oradisk01 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) q                                                                 --链接消失 [root@localhost ~]# ls -l /dev/mapper/oradisk01 ls: cannot access /dev/mapper/oradisk01: No such file or directory --映射的块设备还在 [root@localhost ~]# ls -l /dev/oradisk01 brw-rw----. 1 oracle dba 8, 33 Dec 29 03:29 /dev/oradisk01 --原先的sdc1设备出现 [root@localhost ~]# ls -l /dev/sdc1 brw-rw----. 1 root disk 8, 33 Dec 29 04:29 /dev/sdc1 --重新用parted检查sdc1 [root@localhost ~]# parted /dev/sdc1 GNU Parted 2.1 Using /dev/sdc1 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) q                                                                 --符号链接重新出现 [root@localhost ~]# ls -l /dev/mapper/oradisk01 lrwxrwxrwx. 1 root root 12 Dec 29 04:38 /dev/mapper/oradisk01 -> ../oradisk01 --sdc1重新消失 [root@localhost ~]# ls -l /dev/sdc1 ls: cannot access /dev/sdc1: No such file or directory
  1. Oracle 10204 RAC with HACMP 5.4 Issue

  2. Oracle Database Instance Startup Fails With Error ORA-27302 ORA-27301

  3. How to create ASM filesystem(ACFS) in Oracle 11gR2

  4. How to use udev for Oracle ASM in Oracle Linux 6

  5. How to Recover Datafile Which Deleted Accidentally in Linux


本文网址:http://www.cqora.com/news/593.html

关键词:

最近浏览:

相关产品:

相关新闻:

报名咨询

点击咨询报名

赛烽达QQ群

赛烽达技术群

程老师

13372708242

加微信咨询

张老师微信.jpg

xqzhang@saifengda.com