今天有同事问到linux下如何使用裸设备来建库,简单的总结一下。 64aa610b
1. 对磁盘进行格式化
以 root 用户身份执行
[root@oracle ~]# fdisk /dev/sdb Command (m FOR help): n Command action e extended p PRIMARY PARTITION (1-4) p PARTITION NUMBER (1-4): 1 FIRST cylinder (1-522, DEFAULT 1): USING DEFAULT VALUE 1 LAST cylinder OR +SIZE OR +sizeM OR +sizeK (1-522, DEFAULT 522): 200 Command (m FOR help): w The PARTITION TABLE has been altered! Calling ioctl() TO re-read PARTITION TABLE. Syncing disks.
2. 查看分区的结果
[root@oracle ~]# fdisk -l /dev/sdb Disk /dev/sdb: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders OF 16065 * 512 = 8225280 bytes Device Boot START END Blocks Id SYSTEM /dev/sdb1 1 200 1606468+ 83 Linux
3. 修改rawdevices文件
将以下行添加到/etc/sysconfig/rawdevices中
/dev/RAW/raw1 /dev/sdc1
4. 使得映射立即生效
以 root 用户身份执行以下命令
[root@oracle ~]# service rawdevices restart Assigning devices: /dev/RAW/raw1 --> /dev/sdb1 /dev/RAW/raw1: bound TO major 8, minor 17 done
5. 修改映射文件属主
# chown oracle:dba /dev/RAW/raw1 # chmod 660 /dev/RAW/raw1 # ls -lat /dev/RAW/RAW* crw-rw---- 1 oracle dba 162, 1 Nov 4 07:04 /dev/raw/raw1
6. 修改 /etc/udev/permissions.d/50-udev.permissions文件
原始设备在引导时会重新映射,默认情况下,在引导时原始设备的拥有者将更改为root用户。如果拥有者不是oracle用户,在访问共享分区时会出现问题。在 /etc/udev/permissions.d/50-udev.permissions 中为原始行“raw/*:root:disk:0660”添加注释,然后添加一个新行“raw/*:oracle:dba:0660”。
# RAW devices ram*:root:disk:0660 #raw/*:root:disk:0660 raw/*:oracle:dba:0660
7. 建立裸设备表空间
通过上面的步骤,linux下的裸设备文件就建好了,可以使用/dev/raw/raw1文件来建立数据库文件。
SQL> CREATE TABLESPACE rawspace datafile '/dev/raw/raw1' SIZE 1400m; TABLESPACE created. SQL> DESC SQL> SELECT file_name FROM dba_data_files; FILE_NAME -------------------------------------------------------------------------------- /u01/oracle/oradata/randy/users01.dbf /u01/oracle/oradata/randy/sysaux01.dbf /u01/oracle/oradata/randy/undotbs01.dbf /u01/oracle/oradata/randy/system01.dbf /u01/oracle/oradata/randy/example01.dbf /u01/oracle/oradata/randy/rman01.dbf /u01/oracle/oradata/randy/users02.dbf /dev/RAW/raw1 8 ROWS selected.