Welcome 微信登录

首页 / 数据库 / MySQL / 使用RMAN传输表空间

前面提到的传输表空间是手动的(http://www.linuxidc.com/Linux/2011-10/44972.htm),可以看到需要把表空间read only,如果使用rman则不需要,因为rman是利用的备份集。 
可传输表空间实验环境
 OSIPSID存储方式表空间用户
源数据库RedHat5.410.10.10.7orclASMttb1user1test
目标数据库redhat5.410.10.10.8orcl文件系统——user1——
下面给出创建测试环境的脚本(源数据库上面执行的操作)
  1. SQL> show user  
  2. USER 为 "SYS"  
  3. SQL> create tablespace ttb1 datafile "+datadg" size 10m;  
  4.   
  5. 表空间已创建。  
  6.   
  7. SQL> create user user1 identified by user1 default tablespace ttb1;  
  8.   
  9. 用户已创建。  
  10.   
  11. SQL> grant connect,resource to user1;  
  12.   
  13. 授权成功。  
  14.   
  15. SQL> create table user1.test as select * from dba_objects where rownum < 100;  
  16.   
  17. 表已创建。  
  18.   
  19. SQL> conn user1/user1  
  20. 已连接。  
  21. SQL> select * from tab;  
  22.   
  23. TNAME                          TABTYPE  CLUSTERID  
  24. ------------------------------ ------- ----------   
  25. TEST                           TABLE  
  26.   
  27. SQL> select count(*) from test;  
  28.   
  29.   COUNT(*)  
  30. ----------   
  31.         99  
可传输表空间实战1.确认要传输表空间的平台是否兼容(源数据库和目标数据库上面都一样,因为都是redhat5.4的OS)
  1. SQL> select tp.* from v$transportable_platform tp,v$database d where tp.PLATFORM_NAME = d.PLATFORM_NAME;  
  2.   
  3. PLATFORM_ID PLATFORM_NAME                            ENDIAN_FORMAT  
  4. ----------- ---------------------------------------- --------------   
  5.          10 Linux IA (32-bit)                        Little  
2.确认传输的表空间是否自包含(源数据库上面执行的操作)
  1. SQL> exec dbms_tts.transport_set_check("ttb1",true,true);  
  2.   
  3. PL/SQL 过程已成功完成。  
  4.   
  5. SQL> select * from transport_set_violations;  
  6.   
  7. 未选定行  
3.备份数据库(源数据库上面执行的操作)
  1. RMAN> sql "alter system checkpoint";  
  2.   
  3. sql 语句: alter system checkpoint  
  4.   
  5. RMAN> sql "alter system archive log current";  
  6.   
  7. sql 语句: alter system archive log current  
  8.   
  9. RMAN> sql "alter system switch logfile";  
  10.   
  11. sql 语句: alter system switch logfile  
  12.   
  13. RMAN> backup database;  
  14.   
  15. 启动 backup 于 07-10月-11  
  16. 使用通道 ORA_DISK_1  
  17. 通道 ORA_DISK_1: 启动全部数据文件备份集  
  18. 通道 ORA_DISK_1: 正在指定备份集中的数据文件  
  19. 输入数据文件 fno=00001 name=+DATADG/orcl/datafile/system.260.762322843  
  20. 输入数据文件 fno=00002 name=+DATADG/orcl/datafile/undotbs1.261.762322855  
  21. 输入数据文件 fno=00003 name=+DATADG/orcl/datafile/sysaux.262.762322857  
  22. 输入数据文件 fno=00005 name=+DATADG/orcl/datafile/tb1.267.763910145  
  23. 输入数据文件 fno=00006 name=+DATADG/orcl/datafile/tb2.268.763910201  
  24. 输入数据文件 fno=00007 name=+DATADG/orcl/datafile/ttb1.269.763916007  
  25. 输入数据文件 fno=00004 name=+DATADG/orcl/datafile/users.264.762322865  
  26. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11  
  27. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11  
  28. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记=TAG20111007T154253 注释=NONE  
  29. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35  
  30. 通道 ORA_DISK_1: 启动全部数据文件备份集  
  31. 通道 ORA_DISK_1: 正在指定备份集中的数据文件  
  32. 备份集中包括当前控制文件  
  33. 在备份集中包含当前的 SPFILE  
  34. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11  
  35. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11  
  36. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记=TAG20111007T154253 注释=NONE  
  37. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03  
  38. 完成 backup 于 07-10月-11  
  39.   
  40. RMAN> backup archivelog all;  
  41.   
  42. 启动 backup 于 07-10月-11  
  43. 当前日志已存档  
  44. 使用通道 ORA_DISK_1  
  45. 通道 ORA_DISK_1: 正在启动存档日志备份集  
  46. 通道 ORA_DISK_1: 正在指定备份集中的存档日志  
  47. 输入存档日志线程 =1 序列 =29 记录 ID=1 时间戳=762324929  
  48. 输入存档日志线程 =1 序列 =30 记录 ID=2 时间戳=762374199  
  49. 输入存档日志线程 =1 序列 =31 记录 ID=3 时间戳=762886152  
  50. 输入存档日志线程 =1 序列 =32 记录 ID=4 时间戳=763918707  
  51. 输入存档日志线程 =1 序列 =33 记录 ID=5 时间戳=763918939  
  52. 输入存档日志线程 =1 序列 =34 记录 ID=6 时间戳=763918951  
  53. 输入存档日志线程 =1 序列 =35 记录 ID=7 时间戳=763919033  
  54. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11  
  55. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11  
  56. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/annnf0_tag20111007t154353_0.268.763919035 标记=TAG20111007T154353 注释=NONE  
  57. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04  
  58. 完成 backup 于 07-10月-11  
  59.   
  60. RMAN> backup current controlfile;  
  61.   
  62. 启动 backup 于 07-10月-11  
  63. 使用通道 ORA_DISK_1  
  64. 通道 ORA_DISK_1: 启动全部数据文件备份集  
  65. 通道 ORA_DISK_1: 正在指定备份集中的数据文件  
  66. 备份集中包括当前控制文件  
  67. 通道 ORA_DISK_1: 正在启动段 1 于 07-10月-11  
  68. 通道 ORA_DISK_1: 已完成段 1 于 07-10月-11  
  69. 段句柄=+FLSHDG/orcl/backupset/2011_10_07/ncnnf0_tag20111007t154419_0.269.763919061 标记=TAG20111007T154419 注释=NONE  
  70. 通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02  
  71. 完成 backup 于 07-10月-11  
说明:这里使用全库备份,因为除了目标表空间的备份以外,RMAN还需要SYSTEM、SYSAUX以及UNDO表空间的备份,如果任意一个表空间的备份不存在,则就会导致“RMAN-06019: 无法转换表空间名称"TTB1"”的错误。4.生成传输集(源数据库上面执行的操作)
  1. RMAN> transport tablespace ttb1 tablespace destination "/u01/td" auxiliary destination "/u01/ad";  
  2.   
  3. RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点  
  4.   
  5. 表空间列表要求具有 UNDO 段  
  6. 表空间 SYSTEM  
  7. 表空间 UNDOTBS1  
  8.   
  9. 使用 SID="hiEo" 创建自动实例  
  10.   
  11. 供自动实例使用的初始化参数:  
  12. db_name=ORCL  
  13. compatible=10.2.0.3.0  
  14. db_block_size=8192  
  15. db_files=200  
  16. db_unique_name=tspitr_ORCL_hiEo  
  17. large_pool_size=1M  
  18. shared_pool_size=110M  
  19. #No auxiliary parameter file used  
  20. db_create_file_dest=/u01/ad  
  21. control_files=/u01/ad/cntrl_tspitr_ORCL_hiEo.f  
  22.   
  23.   
  24. 启动自动实例 ORCL  
  25.   
  26. Oracle 实例已启动  
  27.   
  28. 系统全局区域总计     201326592 字节  
  29.   
  30. Fixed Size                     1266584 字节  
  31. Variable Size                146803816 字节  
  32. Database Buffers              50331648 字节  
  33. Redo Buffers                   2924544 字节  
  34. 自动实例已创建  
  35.   
  36. 内存脚本的内容:  
  37. {  
  38. set the until clause  
  39. set until  scn 973897;  
  40. # restore the controlfile  
  41. restore clone controlfile;  
  42. # mount the controlfile  
  43. sql clone "alter database mount clone database";  
  44. # archive current online log for tspitr to a resent until time  
  45. sql "alter system archive log current";  
  46. # avoid unnecessary autobackups for structural changes during TSPITR  
  47. sql "begin dbms_backup_restore.AutoBackupFlag(FALSE); end;";  
  48. }  
  49. 正在执行内存脚本  
  50.   
  51. 正在执行命令: SET until clause  
  52.   
  53. 启动 restore 于 07-10月-11  
  54. 分配的通道: ORA_AUX_DISK_1  
  55. 通道 ORA_AUX_DISK_1: sid=37 devtype=DISK  
  56.   
  57. 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集  
  58. 通道 ORA_AUX_DISK_1: 正在还原控制文件  
  59. 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011  
  60. 通道 ORA_AUX_DISK_1: 已还原备份片段 1  
  61. 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/ncsnf0_tag20111007t154253_0.266.763919011 标记 = TAG20111007T154253  
  62. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:18  
  63. 输出文件名=/u01/ad/cntrl_tspitr_ORCL_hiEo.f  
  64. 完成 restore 于 07-10月-11  
  65.   
  66. sql 语句: alter database mount clone database  
  67.   
  68. sql 语句: alter system archive log current  
  69.   
  70. sql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;  
  71. 释放的通道: ORA_DISK_1  
  72. 释放的通道: ORA_AUX_DISK_1  
  73.   
  74. 内存脚本的内容:  
  75. {  
  76. # generated tablespace point-in-time recovery script  
  77. set the until clause  
  78. set until  scn 973897;  
  79. set an omf destination filename for restore  
  80. set newname for clone datafile  1 to new;  
  81. set an omf destination filename for restore  
  82. set newname for clone datafile  2 to new;  
  83. set an omf destination filename for restore  
  84. set newname for clone datafile  3 to new;  
  85. set an omf destination tempfile  
  86. set newname for clone tempfile  1 to new;  
  87. set a destination filename for restore  
  88. set newname for datafile  7 to   
  89.  "/u01/td/ttb1.269.763916007";  
  90. # rename all tempfiles  
  91. switch clone tempfile all;  
  92. # restore the tablespaces in the recovery set plus the auxilliary tablespaces  
  93. restore clone datafile  1, 2, 3, 7;  
  94. switch clone datafile all;  
  95. #online the datafiles restored or flipped  
  96. sql clone "alter database datafile  1 online";  
  97. #online the datafiles restored or flipped  
  98. sql clone "alter database datafile  2 online";  
  99. #online the datafiles restored or flipped  
  100. sql clone "alter database datafile  3 online";  
  101. #online the datafiles restored or flipped  
  102. sql clone "alter database datafile  7 online";  
  103. # make the controlfile point at the restored datafiles, then recover them  
  104. recover clone database tablespace  "TTB1""SYSTEM""UNDOTBS1""SYSAUX" delete archivelog;  
  105. alter clone database open resetlogs;  
  106. # PLUG HERE the creation of a temporary tablespace if export fails due to lack  
  107. of temporary space.  
  108. For example in Unix these two lines would do that:  
  109. #sql clone "create tablespace aux_tspitr_tmp  
  110. #           datafile ""/tmp/aux_tspitr_tmp.dbf"" size 500K";  
  111. }  
  112. 正在执行内存脚本  
  113.   
  114. 正在执行命令: SET until clause  
  115.   
  116. 正在执行命令: SET NEWNAME  
  117.   
  118. 正在执行命令: SET NEWNAME  
  119.   
  120. 正在执行命令: SET NEWNAME  
  121.   
  122. 正在执行命令: SET NEWNAME  
  123.   
  124. 正在执行命令: SET NEWNAME  
  125.   
  126. 临时文件 1 在控制文件中已重命名为 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_%u_.tmp  
  127.   
  128. 启动 restore 于 07-10月-11  
  129. 分配的通道: ORA_AUX_DISK_1  
  130. 通道 ORA_AUX_DISK_1: sid=39 devtype=DISK  
  131.   
  132. 通道 ORA_AUX_DISK_1: 正在开始恢复数据文件备份集  
  133. 通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件  
  134. 正将数据文件00001还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_%u_.dbf  
  135. 正将数据文件00002还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_%u_.dbf  
  136. 正将数据文件00003还原到/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_%u_.dbf  
  137. 正将数据文件00007还原到/u01/td/ttb1.269.763916007  
  138. 通道 ORA_AUX_DISK_1: 正在读取备份片段 +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973  
  139. 通道 ORA_AUX_DISK_1: 已还原备份片段 1  
  140. 段句柄 = +FLSHDG/orcl/backupset/2011_10_07/nnndf0_tag20111007t154253_0.262.763918973 标记 = TAG20111007T154253  
  141. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:36  
  142. 完成 restore 于 07-10月-11  
  143.   
  144. 数据文件 1 已转换成数据文件副本  
  145. 输入数据文件副本 recid=5 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf  
  146. 数据文件 2 已转换成数据文件副本  
  147. 输入数据文件副本 recid=6 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf  
  148. 数据文件 3 已转换成数据文件副本  
  149. 输入数据文件副本 recid=7 stamp=763919178 文件名=/u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf  
  150. 数据文件 7 已转换成数据文件副本  
  151. 输入数据文件副本 recid=8 stamp=763919178 文件名=/u01/td/ttb1.269.763916007  
  152.   
  153. sql 语句: alter database datafile  1 online  
  154.   
  155. sql 语句: alter database datafile  2 online  
  156.   
  157. sql 语句: alter database datafile  3 online  
  158.   
  159. sql 语句: alter database datafile  7 online  
  160.   
  161. 启动 recover 于 07-10月-11  
  162. 使用通道 ORA_AUX_DISK_1  
  163.   
  164. 正在开始介质的恢复  
  165.   
  166. 存档日志线程 1 序列 35 已作为文件 +FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 存在于磁盘上  
  167. 存档日志文件名 =+FLSHDG/orcl/archivelog/2011_10_07/thread_1_seq_35.267.763919033 线程 =1 序列 =35  
  168. 介质恢复完成, 用时: 00:00:02  
  169. 完成 recover 于 07-10月-11  
  170.   
  171. 数据库已打开  
  172.   
  173. 内存脚本的内容:  
  174. {  
  175. #mark read only the tablespace that will be exported  
  176. sql clone "alter tablespace TTB1 read only";  
  177. create directory for datapump export  
  178. sql clone "create or replace directory STREAMS_DIROBJ_DPDIR as ""  
  179. /u01/td""";  
  180. # export the tablespaces in the recovery set  
  181. host "expdp userid="/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=^"(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^")(ENVS=^"ORACLE_SID=hiEo^"))(CONNECT_DATA=(SID=hiEo))) as sysdba" transport_tablespaces=  
  182.  TTB1 dumpfile=  
  183. dmpfile.dmp directory=  
  184. STREAMS_DIROBJ_DPDIR logfile=  
  185. explog.log";  
  186. }  
  187. 正在执行内存脚本  
  188.   
  189. sql 语句: alter tablespace TTB1 read only  
  190.   
  191. sql 语句: create or replace directory STREAMS_DIROBJ_DPDIR as ""/u01/td""  
  192.   
  193.   
  194. Export: Release 10.2.0.4.0 - Production on 星期五, 07 10月, 2011 15:46:44  
  195.   
  196. Copyright (c) 2003, 2007, Oracle.  All rights reserved.  
  197.   
  198. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production  
  199. With the Partitioning, OLAP, Data Mining and Real Application Testing options  
  200. 启动 "SYS"."SYS_EXPORT_TRANSPORTABLE_01":  userid="/********@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=/u01/app/oracle/product/10.2.0/db_1/bin/oracle)(ARGV0=oraclehiEo)(ARGS=(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))))(ENVS=ORACLE_SID=hiEo))(CONNECT_DATA=(SID=hiEo))) AS SYSDBA" transport_tablespaces= TTB1 dumpfile=dmpfile.dmp directory=STREAMS_DIROBJ_DPDIR logfile=explog.log   
  201. 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLK  
  202. 处理对象类型 TRANSPORTABLE_EXPORT/TABLE  
  203. 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK  
  204. 已成功加载/卸载了主表 "SYS"."SYS_EXPORT_TRANSPORTABLE_01"   
  205. ******************************************************************************  
  206. SYS.SYS_EXPORT_TRANSPORTABLE_01 的转储文件集为:  
  207.   /u01/td/dmpfile.dmp  
  208. 作业 "SYS"."SYS_EXPORT_TRANSPORTABLE_01" 已于 15:47:14 成功完成  
  209.   
  210. 主机命令完成  
  211. /*  
  212.    The following command may be used to import the tablespaces.  
  213.    Substitute values for <logon> and <directory>.  
  214.    impdp <logon> directory=<directory> dumpfile= "dmpfile.dmp" transport_datafiles= /u01/td/ttb1.269.763916007   
  215. */  
  216. --------------------------------------------------------------   
  217. -- Start of sample PL/SQL script for importing the tablespaces   
  218. --------------------------------------------------------------   
  219. -- creating directory objects   
  220. CREATE DIRECTORY STREAMS$DIROBJ$1 AS  "/u01/td/";  
  221. CREATE DIRECTORY STREAMS$DIROBJ$DPDIR AS  "/u01/td";  
  222. /* PL/SQL Script to import the exported tablespaces */  
  223. DECLARE  
  224.   -- the datafiles   
  225.   tbs_files     dbms_streams_tablespace_adm.file_set;  
  226.   cvt_files     dbms_streams_tablespace_adm.file_set;  
  227.   -- the dumpfile to import   
  228.   dump_file     dbms_streams_tablespace_adm.file;  
  229.   dp_job_name   VARCHAR2(30) := NULL;  
  230.   -- names of tablespaces that were imported   
  231.   ts_names       dbms_streams_tablespace_adm.tablespace_set;  
  232. BEGIN  
  233.   -- dump file name and location   
  234.   dump_file.file_name :=  "dmpfile.dmp";  
  235.   dump_file.directory_object := "STREAMS$DIROBJ$DPDIR";  
  236.   -- forming list of datafiles for import   
  237.   tbs_files( 1).file_name :=  "ttb1.269.763916007";  
  238.   tbs_files( 1).directory_object :=  "STREAMS$DIROBJ$1";  
  239.   -- import tablespaces   
  240.   dbms_streams_tablespace_adm.attach_tablespaces(  
  241.     datapump_job_name      => dp_job_name,  
  242.     dump_file              => dump_file,  
  243.     tablespace_files       => tbs_files,  
  244.     converted_files        => cvt_files,  
  245.     tablespace_names       => ts_names);  
  246.   -- output names of imported tablespaces   
  247.   IF ts_names IS NOT NULL AND ts_names.first IS NOT NULL THEN  
  248.     FOR i IN ts_names.first .. ts_names.last LOOP  
  249.       dbms_output.put_line("imported tablespace "|| ts_names(i));  
  250.     END LOOP;  
  251.   END IF;  
  252. END;  
  253. /  
  254. -- dropping directory objects   
  255. DROP DIRECTORY STREAMS$DIROBJ$1;  
  256. DROP DIRECTORY STREAMS$DIROBJ$DPDIR;  
  257. --------------------------------------------------------------   
  258. -- End of sample PL/SQL script   
  259. --------------------------------------------------------------   
  260.   
  261. 删除自动实例  
  262. 关闭自动实例   
  263. Oracle 实例已关闭  
  264. 自动实例已删除  
  265. 已删除辅助实例文件 /u01/ad/cntrl_tspitr_ORCL_hiEo.f  
  266. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_system_78xck70k_.dbf  
  267. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_undotbs1_78xck72r_.dbf  
  268. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_sysaux_78xck73h_.dbf  
  269. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/datafile/o1_mf_temp_78xclrd5_.tmp  
  270. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_1_78xclmkj_.log  
  271. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_2_78xclnjl_.log  
  272. 已删除辅助实例文件 /u01/ad/TSPITR_ORCL_HIEO/onlinelog/o1_mf_3_78xclnxc_.log  
  • 1
  • 2
  • 下一页
使用可传输表空间的特性复制数据Oracle笔记:移动数据文件的方法总结相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数