数据库OPEN状态下迁移数据文件的几种方法
2013-01-17 20:17
471 查看
有时可能会遇到磁盘空间满了,要求把部分表空间或者是数据文件迁移到位置的情况,下次介绍了3种方法来移动数据文件,移动表空间方法也是一样的。
1,使用操作系统的MV方式。
2,使用BACKUP AS COPY方式。
3,使用RESTORE方式
下面是详细的每种方式的步骤:
1,使用操作系统的MV方式
2,使用BACKUP AS COPY的方式
3.使用restore的方式。
虽然上面三种方法都可以,但是我们应该选择那一种方法呢?这个要根据当时的环境来看,
个人觉得第二个方法最好,因为在COPY过程中不需要把数据文件OFFLINE,这样不会影响业务,只有在switch过程中才需要把datafile offline.
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.
相关文章推荐
- 数据库open状态下,如何修改数据文件路径(可用于改名改路径)
- datagrid数据导出到excel文件给客户端下载的几种方法
- (转载)datagrid数据导出到excel文件给客户端下载的几种方法
- mysql数据文件迁移到新硬盘分区的方法
- shell脚本从文件中按行读取数据,并且赋值到数组中的几种方法
- datagrid数据导出到excel文件给客户端下载的几种方法
- mysql导出表数据到文件的几种方法
- POI读取excel2007文件的数据,插入数据库的使用方法【经验之谈】
- 从数据库导出大量数据记录保存到文件的方法和实例
- Access程序从txt文件导入数据至数据库的DoCmd.TransferText方法
- datagrid数据导出到excel文件给客户端下载的几种方法 (转)
- 在SQL Server中迁移数据的几种方法
- datagrid数据导出到excel文件给客户端下载的几种方法
- 数据库open时,回滚数据文件丢失,无备份,有活动事务(实验系列)
- openFileInput()和 openFileOutput()方法利用java流将数据存储到文件中
- Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
- 数据库数据文件转移方法1
- 在SQL Server中迁移数据的几种方法
- oracle迁移数据文件方法
- 通过shell脚本实现从文件中读取数据的几种方法