数据库OPEN状态下迁移数据文件的几种方法

     有时可能会遇到磁盘空间满了,要求把部分表空间或者是数据文件迁移到位置的情况,下次介绍了3种方法来移动数据文件,移动表空间方法也是一样的。

      1,使用操作系统的MV方式。

      2,使用BACKUP AS COPY方式。

      3,使用RESTORE方式

    下面是详细的每种方式的步骤:

      1,使用操作系统的MV方式


  1. 1.1 查看数据文件的系统 
  2. SQL> @files.sql 
  3. Type     Tablspace       Filename                                                                   File Size Status     Sequence Arch 
  4. -------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- ---- 
  5. Data     TEST1           D:\APP\LUOPING\ORADATA\WINORCL\TEST1.DBF                                  10,485,760 Available         0 
  6.  
  7. 1.2 把数据文件OFFLINE 
  8. SQL> alter tablespace test1 offline; 
  9.  
  10. 表空间已更改。 
  11.  
  12. SQL> host mv D:\APP\LUOPING\ORADATA\WINORCL\TEST1.DBF D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF 
  13. 1.3 修改数据文件的路径 
  14. SQL> alter database rename file 'D:\APP\LUOPING\ORADATA\WINORCL\TEST1.DBF' to 'D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF'
  15.  
  16. 数据库已更改。 
  17. 1.4 online文件文件 
  18. SQL> alter tablespace test1 online; 
  19.  
  20. 表空间已更改。 
  21. 1.5 查看修改后的路径 
  22. SQL> @files.sql 
  23. Type     Tablspace       Filename                                                                   File Size Status     Sequence Arch 
  24. -------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- ---- 
  25. Data     TEST1           D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF                                  10,485,760 Available         0 
  26.  
  27. 说明已经成功完成修改 

       2,使用BACKUP AS COPY的方式


  1. 2.1 COPY数据文件到指定位置 
  2. D:\app\luoping\oradata\winorcl>rman target / 
  3.  
  4. 恢复管理器: Release 11.2.0.1.0 - Production on 星期四 1月 17 19:43:11 2013 
  5.  
  6. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved. 
  7.  
  8. 连接到目标数据库: WINORCL (DBID=1952338960) 
  9.  
  10. RMAN> backup as copy datafile 6 format='D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF'
  11.  
  12. 启动 backup 于 17-1月 -13 
  13. 使用目标数据库控制文件替代恢复目录 
  14. 分配的通道: ORA_DISK_1 
  15. 通道 ORA_DISK_1: SID=9 设备类型=DISK 
  16. 通道 ORA_DISK_1: 启动数据文件副本 
  17. 输入数据文件: 文件号=00006 名称=D:\APP\LUOPING\ORADATA\WINORCL\TEST2.DBF 
  18. 输出文件名=D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF 标记=TAG20130117T194403 RECID=1 STAMP=8049734 
  19. 通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01 
  20. 完成 backup 于 17-1月 -13 
  21.  
  22. 启动 Control File and SPFILE Autobackup 于 17-1月 -13 
  23. 段 handle=E:\INSTALL\TEST\C-1952338960-20130117-01 comment=NONE 
  24. 完成 Control File and SPFILE Autobackup 于 17-1月 -13 
  25. 2.2 OFFLINE数据文件 
  26. RMAN> sql 'alter database datafile 6 offline'
  27.  
  28. sql 语句: alter database datafile 6 offline 
  29. 2.3 切换到COPY的位置 
  30. RMAN> switch datafile 6 to copy; 
  31.  
  32. 数据文件 6 已切换成数据文件副本 "D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF" 
  33. 2.4 RECOVER数据文件 
  34. RMAN> recover datafile 6; 
  35.  
  36. 启动 recover 于 17-1月 -13 
  37. 使用通道 ORA_DISK_1 
  38.  
  39. 正在开始介质的恢复 
  40. 介质恢复完成, 用时: 00:00:00 
  41.  
  42. 完成 recover 于 17-1月 -13 
  43. 2.5 ONLINE数据文件 
  44. RMAN>  sql 'alter database datafile 6 online'
  45.  
  46. sql 语句: alter database datafile 6 online 
  47. 2.6 查看修改后的路径 
  48. SQL> @files.sql 
  49. Type     Tablspace       Filename                                                                   File Size Status     Sequence Ar 
  50. -------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- -- 
  51. Data     TEST1           D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF                                  10,485,760 Available         0 
  52. 已经成功修改 

        3.使用restore的方式。


  1. 3.1 备份数据文件 
  2. RMAN> backup datafile 6 format 'E:\install\test\6'
  3.  
  4. 启动 backup 于 17-1月 -13 
  5. 使用通道 ORA_DISK_1 
  6. 通道 ORA_DISK_1: 正在启动全部数据文件备份集 
  7. 通道 ORA_DISK_1: 正在指定备份集内的数据文件 
  8. 输入数据文件: 文件号=00006 名称=D:\APP\LUOPING\ORADATA\WINORCL\TEST3.DBF 
  9. 通道 ORA_DISK_1: 正在启动段 1 于 17-1月 -13 
  10. 通道 ORA_DISK_1: 已完成段 1 于 17-1月 -13 
  11. 段句柄=E:\INSTALL\TEST\6 标记=TAG20130117T194942 注释=NONE 
  12. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01 
  13. 完成 backup 于 17-1月 -13 
  14.  
  15. 启动 Control File and SPFILE Autobackup 于 17-1月 -13 
  16. 段 handle=E:\INSTALL\TEST\C-1952338960-20130117-02 comment=NONE 
  17. 完成 Control File and SPFILE Autobackup 于 17-1月 -13 
  18. 3.2 offline数据文件 
  19. RMAN> sql 'alter database datafile 6 offline'
  20.  
  21. sql 语句: alter database datafile 6 offline 
  22. 3.3 还原数据文件到新的位置 
  23. RMAN> run 
  24. 2> {allocate channel t1 type disk; 
  25. 3> set newname for datafile 6 to 'D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF'
  26. 4> restore datafile 6; 
  27. 5> switch datafile 6; 
  28. 6> recover datafile 6; 
  29. 7> sql 'alter database datafile 6 online'
  30. 8> } 
  31.  
  32. 释放的通道: ORA_DISK_1 
  33. 分配的通道: t1 
  34. 通道 t1: SID=9 设备类型=DISK 
  35.  
  36. 正在执行命令: SET NEWNAME 
  37.  
  38. 启动 restore 于 17-1月 -13 
  39.  
  40. 通道 t1: 正在开始还原数据文件备份集 
  41. 通道 t1: 正在指定从备份集还原的数据文件 
  42. 通道 t1: 将数据文件 00006 还原到 D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF 
  43. 通道 t1: 正在读取备份片段 E:\INSTALL\TEST\6 
  44. 通道 t1: 段句柄 = E:\INSTALL\TEST\6 标记 = TAG20130117T194942 
  45. 通道 t1: 已还原备份片段 1 
  46. 通道 t1: 还原完成, 用时: 00:00:01 
  47. 完成 restore 于 17-1月 -13 
  48.  
  49. 数据文件 6 已转换成数据文件副本 
  50. 输入数据文件副本 RECID=4 STAMP=804973935 文件名=D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF 
  51.  
  52. 启动 recover 于 17-1月 -13 
  53.  
  54. 正在开始介质的恢复 
  55. 介质恢复完成, 用时: 00:00:00 
  56.  
  57. 完成 recover 于 17-1月 -13 
  58.  
  59. sql 语句: alter database datafile 6 online 
  60. 释放的通道: t1 
  61.  
  62.  
  63. 3.4 查看修改的路径 
  64. SQL> @files.sql 
  65. Type     Tablspace       Filename                                                                   File Size Status     Sequence Arch 
  66. -------- --------------- ----------------------------------------------------------------- ------------------ ---------- -------- ---- 
  67. Data     TEST1           D:\APP\LUOPING\ORADATA\WINORCL\TEST4.DBF                                  10,485,760 Available         0 
  68.  
  69. 已经成功完成修改 

     虽然上面三种方法都可以,但是我们应该选择那一种方法呢?这个要根据当时的环境来看,

个人觉得第二个方法最好,因为在COPY过程中不需要把数据文件OFFLINE,这样不会影响业务,只有在switch过程中才需要把datafile offline.





     本文转自7343696 51CTO博客,原文链接:http://blog.51cto.com/luoping/1121116,如需转载请自行联系原作者



上一篇:Android--SDK Tools列表介绍


下一篇:大学英语精读第三版(第一册)学习笔记(原文及全文翻译)——9B - Fresh Air Will Kill You(新鲜空气会让你送命)