数据库OPEN状态下迁移数据文件的几种方法
有时可能会遇到磁盘空间满了,要求把部分表空间或者是数据文件迁移到位置的情况,下次介绍了3种方法来移动数据文件,移动表空间方法也是一样的。1,使用操作系统的MV方式。
2,使用BACKUP AS COPY方式。
3,使用RESTORE方式
下面是详细的每种方式的步骤:
1,使用操作系统的MV方式
[*]1.1 查看数据文件的系统
[*]SQL> @files.sql
[*]Type Tablspace Filename File Size Status Sequence Arch
[*]-------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- ----
[*]Data TEST1 D:\APP\LUOPING\ORADATA\WINORCL\TEST1.DBF 10,485,760 Available 0
[*]
[*]1.2 把数据文件OFFLINE
[*]SQL> alter tablespace test1 offline;
[*]
[*]表空间已更改。
[*]
[*]SQL> host mv D:\APP\LUOPING\ORADATA\WINORCL\TEST1.DBF D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF
[*]1.3 修改数据文件的路径
[*]SQL> alter database rename file 'D:\APP\LUOPING\ORADATA\WINORCL\TEST1.DBF' to 'D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF';
[*]
[*]数据库已更改。
[*]1.4 online文件文件
[*]SQL> alter tablespace test1 online;
[*]
[*]表空间已更改。
[*]1.5 查看修改后的路径
[*]SQL> @files.sql
[*]Type Tablspace Filename File Size Status Sequence Arch
[*]-------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- ----
[*]Data TEST1 D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF 10,485,760 Available 0
[*]
[*]说明已经成功完成修改
2,使用BACKUP AS COPY的方式
[*]2.1 COPY数据文件到指定位置
[*]D:\app\luoping\oradata\winorcl>rman target /
[*]
[*]恢复管理器: Release 11.2.0.1.0 - Production on 星期四 1月 17 19:43:11 2013
[*]
[*]Copyright (c) 1982, 2009, Oracle and/or its affiliates.All rights reserved.
[*]
[*]连接到目标数据库: WINORCL (DBID=1952338960)
[*]
[*]RMAN> backup as copy datafile 6 format='D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF';
[*]
[*]启动 backup 于 17-1月 -13
[*]使用目标数据库控制文件替代恢复目录
[*]分配的通道: ORA_DISK_1
[*]通道 ORA_DISK_1: SID=9 设备类型=DISK
[*]通道 ORA_DISK_1: 启动数据文件副本
[*]输入数据文件: 文件号=00006 名称=D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF
[*]输出文件名=D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF 标记=TAG20130117T194403 RECID=1 STAMP=8049734
[*]通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
[*]完成 backup 于 17-1月 -13
[*]
[*]启动 Control File and SPFILE Autobackup 于 17-1月 -13
[*]段 handle=E:\INSTALL\TEST\C-1952338960-20130117-01 comment=NONE
[*]完成 Control File and SPFILE Autobackup 于 17-1月 -13
[*]2.2 OFFLINE数据文件
[*]RMAN> sql 'alter database datafile 6 offline';
[*]
[*]sql 语句: alter database datafile 6 offline
[*]2.3 切换到COPY的位置
[*]RMAN> switch datafile 6 to copy;
[*]
[*]数据文件 6 已切换成数据文件副本 "D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF"
[*]2.4 RECOVER数据文件
[*]RMAN> recover datafile 6;
[*]
[*]启动 recover 于 17-1月 -13
[*]使用通道 ORA_DISK_1
[*]
[*]正在开始介质的恢复
[*]介质恢复完成, 用时: 00:00:00
[*]
[*]完成 recover 于 17-1月 -13
[*]2.5 ONLINE数据文件
[*]RMAN>sql 'alter database datafile 6 online';
[*]
[*]sql 语句: alter database datafile 6 online
[*]2.6 查看修改后的路径
[*]SQL> @files.sql
[*]Type Tablspace Filename File Size Status Sequence Ar
[*]-------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- --
[*]Data TEST1 D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF 10,485,760 Available 0
[*]已经成功修改
3.使用restore的方式。
[*]3.1 备份数据文件
[*]RMAN> backup datafile 6 format 'E:\install\test\6';
[*]
[*]启动 backup 于 17-1月 -13
[*]使用通道 ORA_DISK_1
[*]通道 ORA_DISK_1: 正在启动全部数据文件备份集
[*]通道 ORA_DISK_1: 正在指定备份集内的数据文件
[*]输入数据文件: 文件号=00006 名称=D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF
[*]通道 ORA_DISK_1: 正在启动段 1 于 17-1月 -13
[*]通道 ORA_DISK_1: 已完成段 1 于 17-1月 -13
[*]段句柄=E:\INSTALL\TEST\6 标记=TAG20130117T194942 注释=NONE
[*]通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
[*]完成 backup 于 17-1月 -13
[*]
[*]启动 Control File and SPFILE Autobackup 于 17-1月 -13
[*]段 handle=E:\INSTALL\TEST\C-1952338960-20130117-02 comment=NONE
[*]完成 Control File and SPFILE Autobackup 于 17-1月 -13
[*]3.2 offline数据文件
[*]RMAN> sql 'alter database datafile 6 offline';
[*]
[*]sql 语句: alter database datafile 6 offline
[*]3.3 还原数据文件到新的位置
[*]RMAN> run
[*]2> {allocate channel t1 type disk;
[*]3> set newname for datafile 6 to 'D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF';
[*]4> restore datafile 6;
[*]5> switch datafile 6;
[*]6> recover datafile 6;
[*]7> sql 'alter database datafile 6 online';
[*]8> }
[*]
[*]释放的通道: ORA_DISK_1
[*]分配的通道: t1
[*]通道 t1: SID=9 设备类型=DISK
[*]
[*]正在执行命令: SET NEWNAME
[*]
[*]启动 restore 于 17-1月 -13
[*]
[*]通道 t1: 正在开始还原数据文件备份集
[*]通道 t1: 正在指定从备份集还原的数据文件
[*]通道 t1: 将数据文件 00006 还原到 D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF
[*]通道 t1: 正在读取备份片段 E:\INSTALL\TEST\6
[*]通道 t1: 段句柄 = E:\INSTALL\TEST\6 标记 = TAG20130117T194942
[*]通道 t1: 已还原备份片段 1
[*]通道 t1: 还原完成, 用时: 00:00:01
[*]完成 restore 于 17-1月 -13
[*]
[*]数据文件 6 已转换成数据文件副本
[*]输入数据文件副本 RECID=4 STAMP=804973935 文件名=D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF
[*]
[*]启动 recover 于 17-1月 -13
[*]
[*]正在开始介质的恢复
[*]介质恢复完成, 用时: 00:00:00
[*]
[*]完成 recover 于 17-1月 -13
[*]
[*]sql 语句: alter database datafile 6 online
[*]释放的通道: t1
[*]
[*]
[*]3.4 查看修改的路径
[*]SQL> @files.sql
[*]Type Tablspace Filename File Size Status Sequence Arch
[*]-------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- ----
[*]Data TEST1 D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF 10,485,760 Available 0
[*]
[*]已经成功完成修改
虽然上面三种方法都可以,但是我们应该选择那一种方法呢?这个要根据当时的环境来看,
个人觉得第二个方法最好,因为在COPY过程中不需要把数据文件OFFLINE,这样不会影响业务,只有在switch过程中才需要把datafile offline.
页:
[1]