Oracle数据库安装时支持文件系统、裸设备、ASM等存储方式。裸设备是指未创建文件系统的磁盘分区或逻辑卷,应用
程序直接通过字符设备驱动器对它进行访问。由于对裸设备的操作跳过了UNIX的缓存,数据在Oracle的data buffer
cache和磁盘之间直接传递,所以裸设备能提高I/O性能。另外在Oracle RAC等环境下,多个节点同时访问一个数据库,
所以控制文件、redo log、数据文件等必须搭建在裸设备之上。
程序直接通过字符设备驱动器对它进行访问。由于对裸设备的操作跳过了UNIX的缓存,数据在Oracle的data buffer
cache和磁盘之间直接传递,所以裸设备能提高I/O性能。另外在Oracle RAC等环境下,多个节点同时访问一个数据库,
所以控制文件、redo log、数据文件等必须搭建在裸设备之上。
UNIX下读写裸设备不适用cp、tar等文件系统的命令,而是适用dd,适用dd可以在linux、AIX等UNIX系统下实现数据文件
和裸设备的双向复制。
和裸设备的双向复制。
rawdb是我linux系统下的一个裸设备数据库,下面我把users表空间的裸设备数据文件复制为文件系统数据文件,然后用文件系统的数据文件
重新打开数据库.
重新打开数据库.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oracle/oradata/rawdb/system01.dbf
/oracle/oradata/rawdb/undo01.dbf
/oracle/oradata/rawdb/sysaux01.dbf
/oracle/oradata/rawdb/users01.dbf
--------------------------------------------------------------------------------
/oracle/oradata/rawdb/system01.dbf
/oracle/oradata/rawdb/undo01.dbf
/oracle/oradata/rawdb/sysaux01.dbf
/oracle/oradata/rawdb/users01.dbf
SQL> ! ls -l /oracle/oradata/rawdb/
鎬荤敤閲?40
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 control01.ctl -> /dev/raw/raw2
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 control02.ctl -> /dev/raw/raw3
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 redo01.log -> /dev/raw/raw4
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 redo02.log -> /dev/raw/raw5
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 spfile -> /dev/raw/raw1
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 sysaux01.dbf -> /dev/raw/raw7
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 system01.dbf -> /dev/raw/raw6
lrwxrwxrwx 1 oracle oinstall 14 8鏈?16 10:58 temp01.dbf -> /dev/raw/raw10
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 undo01.dbf -> /dev/raw/raw9
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 users01.dbf -> /dev/raw/raw8
鎬荤敤閲?40
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 control01.ctl -> /dev/raw/raw2
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 control02.ctl -> /dev/raw/raw3
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 redo01.log -> /dev/raw/raw4
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 redo02.log -> /dev/raw/raw5
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 spfile -> /dev/raw/raw1
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 sysaux01.dbf -> /dev/raw/raw7
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 system01.dbf -> /dev/raw/raw6
lrwxrwxrwx 1 oracle oinstall 14 8鏈?16 10:58 temp01.dbf -> /dev/raw/raw10
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 undo01.dbf -> /dev/raw/raw9
lrwxrwxrwx 1 oracle oinstall 13 8鏈?16 10:58 users01.dbf -> /dev/raw/raw8
SQL>
然后我关闭数据库,进行拷贝user表空间对应的裸设备/dev/oradatavg/lv_users01。
dd if=/oracle/oradata/rawdb/users01.dbf f=/oracle/users01fs.dbf bs=8k
复制完成后:
[oracle@localhost raw]$ sqlplus / as sysdba
[oracle@localhost raw]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 16 12:20:34 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 88082000 bytes
Database Buffers 192937984 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> ALTER DATABASE RENAME FILE '/oracle/oradata/rawdb/users01.dbf' TO '/oracle/users01fs.dbf';
Fixed Size 1218992 bytes
Variable Size 88082000 bytes
Database Buffers 192937984 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> ALTER DATABASE RENAME FILE '/oracle/oradata/rawdb/users01.dbf' TO '/oracle/users01fs.dbf';
Database altered.
SQL> alter database open;
Database altered.
SQL>
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/oracle/oradata/rawdb/system01.dbf
/oracle/oradata/rawdb/undo01.dbf
/oracle/oradata/rawdb/sysaux01.dbf
/oracle/users01fs.dbf
--------------------------------------------------------------------------------
/oracle/oradata/rawdb/system01.dbf
/oracle/oradata/rawdb/undo01.dbf
/oracle/oradata/rawdb/sysaux01.dbf
/oracle/users01fs.dbf
SQL>
裸设备到数据文件的移动成功。
转载于:https://blog.51cto.com/hunter8888/1332359