有时可能会遇到磁盘空间满了,要求把部分表空间或者是数据文件迁移到位置的情况,下次介绍了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.
本文转自7343696 51CTO博客,原文链接:http://blog.51cto.com/luoping/1121116,如需转载请自行联系原作者