在Linux上安装oracle经常会碰到需要使用裸设备的情况,这里就介绍一下Red Hat 4上设置裸设备的方法。
这份文档是在安装好oracle软件的基础上安装的,安装的时候要选择只安装oracle软件。

接下来就是基于裸设备新建数据库了。。。

1.增加一块硬盘,以root登陆OS
[root@rac1 oracle]# fdisk -l
Disk /dev/sda: 255 heads, 63 sectors, 652 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 38 200812+ 82 Linux swap
/dev/sda3 39 652 4931955 83 Linux
Disk /dev/sdh: 128 heads, 32 sectors, 512 cylinders
Units = cylinders of 4096 * 512 bytes
Disk /dev/sdh doesn't contain a valid partition table
2.对Disk /dev/sdh分区成LVM格式(8e的分区类型)
Disk /dev/sdh: 128 heads, 32 sectors, 512 cylinders
Units = cylinders of 4096 * 512 bytes
Device Boot Start End Blocks Id System
/dev/sdh1 1 512 1048560 8e Linux LVM
3.创建物理卷,逻辑卷(组)
执行如下shell:
pvcreate /dev/sdh1
vgcreate oravg /dev/sdh1
lvcreate -L10M    -nlv_spfile oravg

lvcreate -L100M  -nlv_control1 oravg
lvcreate -L100M  -nlv_control2 oravg
lvcreate -L100M  -nlv_control3 oravg

lvcreate -L50M   -nlv_redo1_1 oravg
lvcreate -L50M   -nlv_redo1_2 oravg
lvcreate -L50M   -nlv_redo1_3 oravg

lvcreate -L700M   -nlv_system01 oravg
lvcreate -L700M   -nlv_sysaux01 oravg
lvcreate -L620M   -nlv_undotbs01 oravg
lvcreate -L620M   -nlv_users01 oravg
lvcreate -L500M   -nlv_temp01 oravg

lvcreate -L200M   -nlv_example01 oravg

==================================
其他需要的表空间也要分配相应的空间
lvcreate -L120M   -nlv_tools oravg
lvcreate -L120M   -nlv_indx oravg

vgchange -a y

[root@rac1 oracle]# lvscan
 ACTIVE            '/dev/oravg/lv_spfile' [12.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_control1' [100.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_control2' [100.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_control3' [100.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_redo1_1' [52.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_redo1_2' [52.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_redo1_3' [52.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_system01' [700.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_sysaux01' [700.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_undotbs01' [620.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_users01' [620.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_temp01' [500.00 MB] inherit
  ACTIVE            '/dev/oravg/lv_example01' [200.00 MB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol00' [17.94 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.94 GB] inherit


4.绑定到裸设备上
执行如下shell
raw /dev/raw/raw1 /dev/oravg/lv_spfile
raw /dev/raw/raw2 /dev/oravg/lv_control1
raw /dev/raw/raw3 /dev/oravg/lv_control2
raw /dev/raw/raw4 /dev/oravg/lv_control3
raw /dev/raw/raw5 /dev/oravg/lv_redo1_1
raw /dev/raw/raw6 /dev/oravg/lv_redo1_2
raw /dev/raw/raw7 /dev/oravg/lv_redo1_3
raw /dev/raw/raw8 /dev/oravg/lv_system01
raw /dev/raw/raw9 /dev/oravg/lv_temp01
raw /dev/raw/raw10 /dev/oravg/lv_users01
raw /dev/raw/raw11 /dev/oravg/lv_undotbs01
raw /dev/raw/raw12 /dev/oravg/lv_sysaux01
raw /dev/raw/raw13 /dev/oravg/lv_example01
raw –qa
5.修改/etc/sysconfig/rawdevices文件如下,以开机时自动加载裸设备
(注意:Red Hat 5已经没有rawdevices服务,需要将raw /dev/raw/raw13 /dev/oravg/lv_example01等命令放入/etc/rc.local在开机时执行一遍)

/dev/raw/raw1 /dev/oravg/lv_spfile
/dev/raw/raw2 /dev/oravg/lv_control1
/dev/raw/raw3 /dev/oravg/lv_control2
/dev/raw/raw4 /dev/oravg/lv_control3
/dev/raw/raw5 /dev/oravg/lv_redo1_1
/dev/raw/raw6 /dev/oravg/lv_redo1_2
/dev/raw/raw7 /dev/oravg/lv_redo1_3
/dev/raw/raw8 /dev/oravg/lv_system01
/dev/raw/raw9 /dev/oravg/lv_temp01
/dev/raw/raw10 /dev/oravg/lv_users01
/dev/raw/raw11 /dev/oravg/lv_undotbs01
/dev/raw/raw12 /dev/oravg/lv_sysaux01
/dev/raw/raw13 /dev/oravg/lv_example01
6.将卷组及设备属主(也需要加入启动文件/etc/rc.local)
chown oracle:oinstall /dev/oravg
chown oracle:oinstall /dev/raw/*
chmod +xwr /dev/raw/*
chmod +xrw /dev/raw/
vgchange -a y                       ----启动时自动激活所有卷组

7.创建裸设备映射文件DBCA_RAW_CONFIG.txt并加入环境变量如下:
spfile=/dev/raw/raw1
control1=/dev/raw/raw2
control2=/dev/raw/raw3
control3=/dev/raw/raw4
redo1_1=/dev/raw/raw5
redo1_2=/dev/raw/raw6
redo1_3=/dev/raw/raw7
system=/dev/raw/raw8
temp=/dev/raw/raw9
users=/dev/raw/raw10
undotbs1=/dev/raw/raw11
example=/dev/raw/raw13
sysaux=/dev/raw/raw12

export DBCA_RAW_CONFIG=/home/oracle/DBCA_RAW_CONFIG.txt
export LANG=zh_CN

8.运行DBCA创建数据库(注意选择裸设备创建数据库及数据文件略小于裸设备定义大小)

9.将vgchange -a y加到/etc/rc.local中,启动时自动激活所有卷组


10.扩大数据文件大小

a)扩大逻辑卷
lvextend -L100M /dev/oravg/lv_undo

b)扩大数据文件
SQL> alter database datafile '/dev/raw/raw11' resize 90m;

总结:

我基本上是参照这份文档来完成安装的,但是在安装的过程中也遇到了几个问题:

1、绑定裸设备的问题:

文中使用将绑定裸设备命令写入开机启动文件,实际上除了使用命令绑定之后,还可以通过服务绑定,也即在/etc/sysconfig/rawdevices中绑定,并通过启动绑定服务实现servcie rawdevices start,通过服务绑定的好处在于可以一次启动终身绑定。呵呵。

2、软链接

许多文档都把这个作为可选,实际上应该是必选内容。

不然面对一个个裸设备,哪晓得这些裸设备对应的都是些什么存储内容?

而关于建立软链接,方式有所不同,有取名为*.dbf的(汗,这块我当时也闹不明白是要干嘛,以为非得这么起别名,觉得这么起名字也没觉得有多方便),最后无奈求助才明白怎么回事,呵呵。

3、DBCA_RAW_CONFIG环境变量

在网上找到了相关说明,说是要配置该变量并出现选择使用裸设备还是文件系统格式创建数据库的对话框才算OK,为了这个,我也折腾了一些时间。结果我仍困惑于DBCA_RAW_CONFIG.txt文件所说的映射,在我的观念里觉得既然建立了软链接,并且在这个文本文件里有显示(相当于mapping效果),结果在出现了上面说的对话框后,所有的文件地址都是裸设备(又费劲了老半天,以为哪出错了),当时没管这些了,直接手动给改了(这要不是有老手,还想不到要这么个弄法)。最后在后边搭建rac的时候才发现mapping是有效果的,只要不给export DBCA_RAW_CONFIG,当然就出现不了上面的选择对话框,但“奇妙”的是文本文件中的mapping实现了,所有的之前裸设备在的位置都给映射成相应的软链接名字了 。