本文主要描述如何将Oracle表空间的文件系统形式的数据文件迁移到LV裸设备上。
前提条件
1、oracle运行正常。
2、已使用LVM命令规划好LV文件。如/dev/vgoracle/lvdatatbs。
3、停止oracle监听。
操作步骤
1、查看当前待操作表空间DATATBS对应的数据文件的路径、状态。
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='DATATBS';
2、关闭数据库并启动数据库到mount状态
SQL> shutdown immediate;
SQL> startup mount;
3、使用rman命令将文件系统的数据文件赋值到裸设备上
方法一:
$ rman target / nocatalog
RMAN> copy datafile '/home/oracle/oradata/ora11g/datatbs.dbf' to '/dev/vgoracle/lvdatatbs'
方法二:
$ rman target / nocatalog cmdfile=copy_datafile.cmd
copy_datafile.cmd内容如下:
run {
allocate channel t1 type disk;
copy datafile '/home/oracle/oradata/ora11g/datatbs.dbf' to '/dev/vgoracle/lvdatatbs';
}
说明:如果操作多个数据文件,可以采用这种方式。只需新增copy datafile命令即可。
4、切换表空间对应的数据文件为裸设备。
SQL> alter database rename file '/home/oracle/oradata/ora11g/datatbs.dbf' to '/dev/vgoracle/lvdatatbs';
5、打开数据库
SQL> alter database open;
6、删除被替换的datatbs.dbf数据文件。