根据官方描述:Announcement of DeSupport of using RAW devices in Oracle Database Version 12.1 (Doc ID 578455.1),从12.1开始oracle 彻底放弃了数据文件对raw的支持,但是我测试结果证明依旧可以使用(本测试只是证明功能上可以使用,不能说官方支持,稳定性和遭遇bug情况未知),在条件允许情况下,不建议使用该方式.
block设备测试
[root@localhost ~]# chown oracle:oinstall /dev/sdf
[root@localhost ~]# ls -l /dev/sdf
brw-rw---- 1 oracle oinstall 8, 80 Apr 2 19:28 /dev/sdf
[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sun Apr 2 19:34:22 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
CON_ID
----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
0
PL/SQL Release 12.2.0.1.0 - Production
0
CORE 12.2.0.1.0 Production
0
TNS for Linux: Version 12.2.0.1.0 - Production
0
NLSRTL Version 12.2.0.1.0 - Production
0
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/XFFDB/DATAFILE/system.257.938465955
+DATA/XFFDB/DATAFILE/sysaux.258.938465989
+DATA/XFFDB/DATAFILE/undotbs1.259.938466005
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/system.271.938466083
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/sysaux.270.938466083
+DATA/XFFDB/DATAFILE/users.260.938466007
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/undotbs1.272.938466083
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/system.276.938466401
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/sysaux.277.938466401
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/undotbs1.275.938466399
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/users.279.938466427
11 rows selected.
SQL> create tablespace test datafile '/dev/sdf' size 10M autoextend on;
Tablespace created.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/XFFDB/DATAFILE/system.257.938465955
+DATA/XFFDB/DATAFILE/sysaux.258.938465989
+DATA/XFFDB/DATAFILE/undotbs1.259.938466005
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/system.271.938466083
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/sysaux.270.938466083
+DATA/XFFDB/DATAFILE/users.260.938466007
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/undotbs1.272.938466083
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/system.276.938466401
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/sysaux.277.938466401
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/undotbs1.275.938466399
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/users.279.938466427
/dev/sdf
12 rows selected.
SQL> select file# from v$datafile where name like '%sdf%';
FILE#
----------
13
SQL> select rfile#,file#,name from v$datafile where file#=13;
RFILE# FILE# NAME
---------- ---------- ------------------------------
13 13 /dev/sdf
SQL> create table t_xifenfei tablespace test as
2 select * from dba_objects;
Table created.
SQL> select count(*) from t_xifenfei;
COUNT(*)
----------
72660
SQL> select file_id,extent_id,blocks from dba_extents where segment_name='T_XIFENFEI';
FILE_ID EXTENT_ID BLOCKS
---------- ---------- ----------
13 0 8
13 1 8
13 2 8
13 3 8
13 4 8
13 5 8
13 6 8
13 7 8
13 8 8
13 9 8
13 10 8
13 11 8
13 12 8
13 13 8
13 14 8
13 15 8
13 16 128
13 17 128
13 18 128
13 19 128
13 20 128
13 21 128
13 22 128
13 23 128
13 24 128
13 25 128
13 26 128
27 rows selected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2432696320 bytes
Fixed Size 8795664 bytes
Variable Size 654313968 bytes
Database Buffers 1761607680 bytes
Redo Buffers 7979008 bytes
Database mounted.
Database opened.
SQL> select count(*) from t_xifenfei;
COUNT(*)
----------
72660
SQL>
SQL> set pages 100
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/XFFDB/DATAFILE/system.257.938465955
+DATA/XFFDB/DATAFILE/sysaux.258.938465989
+DATA/XFFDB/DATAFILE/undotbs1.259.938466005
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/system.271.938466083
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/sysaux.270.938466083
+DATA/XFFDB/DATAFILE/users.260.938466007
+DATA/XFFDB/4700A987085B3DFAE05387E5E50A8C7B/DATAFILE/undotbs1.272.938466083
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/system.276.938466401
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/sysaux.277.938466401
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/undotbs1.275.938466399
+DATA/XFFDB/4A93528C587D82CEE055000000000001/DATAFILE/users.279.938466427
/dev/sdf
12 rows selected.
lvm设备测试
[root@localhost ~]# pvcreate /dev/sdf
Physical volume "/dev/sdf" successfully created.
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# vgcreate vgxff /dev/sdf
Volume group "vgxff" successfully created
[root@localhost ~]# lvcreate -L 512M -n data01 vgxff
Logical volume "data01" created.
[root@localhost ~]# lvcreate -L 512M -n data02 vgxff
Logical volume "data02" created.
[root@localhost ~]# lvcreate -L 512M -n data03 vgxff
Logical volume "data03" created.
[root@localhost ~]# lvdisplay vgxff
--- Logical volume ---
LV Path /dev/vgxff/data01
LV Name data01
VG Name vgxff
LV UUID c9PowB-11OX-sjcF-fZLe-5vha-xV4x-ITRflH
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-02 19:46:17 -0400
LV Status available
# open 0
LV Size 512.00 MiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 251:2
--- Logical volume ---
LV Path /dev/vgxff/data02
LV Name data02
VG Name vgxff
LV UUID vvMbWB-tale-twTH-hg4k-Kcwh-3I8e-neOnEk
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-02 19:46:21 -0400
LV Status available
# open 0
LV Size 512.00 MiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 251:3
--- Logical volume ---
LV Path /dev/vgxff/data03
LV Name data03
VG Name vgxff
LV UUID DDz3M1-cVX0-NAJb-3rlK-DkYt-eSQG-xna8ew
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-02 19:46:25 -0400
LV Status available
# open 0
LV Size 512.00 MiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 251:4
[root@localhost ~]# cd /dev/vgxff/
[root@localhost vgxff]# ls -ltr
total 0
lrwxrwxrwx 1 root root 7 Apr 2 19:46 data01 -> ../dm-2
lrwxrwxrwx 1 root root 7 Apr 2 19:46 data02 -> ../dm-3
lrwxrwxrwx 1 root root 7 Apr 2 19:46 data03 -> ../dm-4
[root@localhost vgxff]# cd /dev/mapper/
[root@localhost mapper]# ls -ltr
total 0
crw------- 1 root root 10, 236 Apr 2 19:28 control
lrwxrwxrwx 1 root root 7 Apr 2 19:28 ol-swap -> ../dm-1
lrwxrwxrwx 1 root root 7 Apr 2 19:28 ol-root -> ../dm-0
lrwxrwxrwx 1 root root 7 Apr 2 19:46 vgxff-data01 -> ../dm-2
lrwxrwxrwx 1 root root 7 Apr 2 19:46 vgxff-data02 -> ../dm-3
lrwxrwxrwx 1 root root 7 Apr 2 19:46 vgxff-data03 -> ../dm-4
[root@localhost mapper]# ls -l /dev/dm*
brw-rw---- 1 root disk 251, 0 Apr 2 19:28 /dev/dm-0
brw-rw---- 1 root disk 251, 1 Apr 2 19:28 /dev/dm-1
brw-rw---- 1 root disk 251, 2 Apr 2 19:46 /dev/dm-2
brw-rw---- 1 root disk 251, 3 Apr 2 19:46 /dev/dm-3
brw-rw---- 1 root disk 251, 4 Apr 2 19:46 /dev/dm-4
[root@localhost mapper]# chown oracle:oinstall /dev/dm-[2-4]
[root@localhost mapper]# ls -l /dev/dm*
brw-rw---- 1 root disk 251, 0 Apr 2 19:28 /dev/dm-0
brw-rw---- 1 root disk 251, 1 Apr 2 19:28 /dev/dm-1
brw-rw---- 1 oracle oinstall 251, 2 Apr 2 19:46 /dev/dm-2
brw-rw---- 1 oracle oinstall 251, 3 Apr 2 19:46 /dev/dm-3
brw-rw---- 1 oracle oinstall 251, 4 Apr 2 19:46 /dev/dm-4
[root@localhost mapper]#
[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Sun Apr 2 19:50:47 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> create tablespace lvtbs datafile '/dev/mapper/vgxff-data01' size 450M;
Tablespace created.
SQL> alter tablespace lvtbs add datafile '/dev/mapper/vgxff-data02' size 450M;
Tablespace altered.
SQL> alter tablespace lvtbs add datafile '/dev/mapper/vgxff-data03' size 450M;
Tablespace altered.
SQL> select rfile#,file#,name from v$datafile where name like '%mapper%';
RFILE# FILE# NAME
---------- ---------- --------------------------------------------------
14 14 /dev/mapper/vgxff-data01
15 15 /dev/mapper/vgxff-data02
16 16 /dev/mapper/vgxff-data03
SQL> create table lv12c tablespace lvtbs as
2 select * from dba_objects;
Table created.
SQL> select count(*) from lv12c;
COUNT(*)
----------
72660
SQL> select file_id,extent_id,blocks from dba_extents where segment_name='LV12C';
FILE_ID EXTENT_ID BLOCKS
---------- ---------- ----------
14 0 8
14 1 8
14 2 8
14 3 8
14 4 8
14 5 8
14 6 8
14 7 8
14 8 8
14 9 8
14 10 8
14 11 8
14 12 8
14 13 8
14 14 8
14 15 8
14 18 128
14 21 128
14 24 128
15 17 128
15 20 128
15 23 128
15 26 128
16 16 128
16 19 128
16 22 128
16 25 128
27 rows selected.
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2432696320 bytes
Fixed Size 8795664 bytes
Variable Size 654313968 bytes
Database Buffers 1761607680 bytes
Redo Buffers 7979008 bytes
Database mounted.
Database opened.
SQL> select count(*) from lv12c;
COUNT(*)
----------
72660
raw设备测试
[root@localhost ~]# raw /dev/raw/raw1 /dev/sdf
/dev/raw/raw1: bound to major 8, minor 80
[root@localhost ~]# ls -l /dev/raw/raw1
crw-rw---- 1 root disk 162, 1 Apr 4 04:00 /dev/raw/raw1
[root@localhost ~]# chown oracle:oinstall /dev/raw/raw1
[root@localhost ~]# ls -l /dev/raw/raw1
crw-rw---- 1 oracle oinstall 162, 1 Apr 4 04:00 /dev/raw/raw1
[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Apr 4 04:01:42 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> create tablespace rawtbs datafile '/dev/raw/raw1' size 128M autoextend on;
Tablespace created.
SQL> select rfile#,file#,name from v$datafile where name like '%raw%';
RFILE# FILE#
---------- ----------
NAME
--------------------------------------------------------------------------------
17 17
/dev/raw/raw1
SQL> create table t_xifenfei_raw tablespace rawtbs
2 as select * from dba_objects;
Table created.
SQL> select count(*) from t_xifenfei_raw ;
COUNT(*)
----------
72660
SQL> select file_id,extent_id,blocks from dba_extents where segment_name='T_XIFENFEI_RAW';
FILE_ID EXTENT_ID BLOCKS
---------- ---------- ----------
17 0 8
17 1 8
17 2 8
17 3 8
17 4 8
17 5 8
17 6 8
17 7 8
17 8 8
17 9 8
17 10 8
17 11 8
17 12 8
17 13 8
17 14 8
17 15 8
17 16 128
17 17 128
17 18 128
17 19 128
17 20 128
17 21 128
17 22 128
17 23 128
17 24 128
17 25 128
17 26 128
27 rows selected.
从这里这里测试结果看,对于linux的block/raw/lvm设备依旧均可以在功能上做数据文件使用(稳定性和是否有其他bug未知).但没有出现mos中描述的直接报错,在条件允许的情况下,尽可能不要使用直接使用裸设备方式.
在12.2的administrator文档中出现明显描述:
Direct use of raw or block devices is not supported. You can only use raw or block devices under Oracle ASM.