备份与恢复

rman duplicate实现数据库的迁移(使用target库备份)

时间:2013/9/7 19:38:38  作者:solgle.com  来源:说歌社区  查看:581  评论:0
内容摘要:迁移单实例数据库到oracle rac asm环境下。即迁移原系统hrdbprim数据库到oracle rac ASM环境下hrdb数据库,实现数据库的迁移,转为后的实例为hrdb3。具体过程如下1,配置tnsnames.ora文件,实现两个数据库的互相访问[sql]瘀椀...

目的:迁移单实例数据库到oracle rac asm环境下。即迁移原系统hrdbprim数据库到oracle rac ASM环境下hrdb数据库,实现数据库的迁移,转为后的实例为hrdb3。

具体过程如下

1,配置tnsnames.ora文件,实现两个数据库的互相访问

[sql] view plaincopy
  1. <p>1,配置tnsnames.ora文件,实现两个数据库的互相访问</p>vi tnsnames.ora  
  2.   
  3.   
  4. hrdb_source =   
  5.   (DESCRIPTION =  
  6.     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.×)(PORT = 1521))  
  7.     (CONNECT_DATA =  
  8.       (SERVER = DEDICATED)  
  9.       (SERVICE_NAME = hrdbprim)  
  10.     )  
  11.   )  
  12. hrdb =  
  13.   (DESCRIPTION =  
  14.     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.4.×.×)(PORT = 1521))  
  15.     (CONNECT_DATA =  
  16.       (SERVER = DEDICATED)  
  17.       (SERVICE_NAME = hrdb)  
  18.     )  
  19.   )  
  20.     
2,设置备库pfile文件,常见备库的初始化pfile文件,根据参数建立相应的目录。

asm使用asmcmd命令进行创建。

[sql] view plaincopy
  1. vi /oracle/app/oracle/admin/hrdb/inithrdb.ora  
  2. *.audit_file_dest='/oracle/app/oracle/admin/hrdbb/adump'  
  3. *.audit_trail='db'  
  4. *.cluster_database=false  
  5. *.compatible='11.2.0.0.0'  
  6. *.control_files='+DATA/hrdb/controlfile/control01.ctl','+FRA/hrdb/controlfile/control02.ctl'  
  7. *.db_block_size=8192  
  8. *.db_create_file_dest='+DATA'  
  9. *.db_domain=''  
  10. *.db_name='hrdb'  
  11. *.db_recovery_file_dest='+FRA'  
  12. *.db_recovery_file_dest_size=107374182400  
  13. *.diagnostic_dest='/oracle/app/oracle'  
  14. hrdbb3.instance_number=3  
  15. hrdbb2.instance_number=2  
  16. hrdbb1.instance_number=1  
  17. *.log_archive_format='%t_%s_%r.dbf'  
  18. *.nls_language='SIMPLIFIED CHINESE'  
  19. *.nls_territory='CHINA'  
  20. *.open_cursors=1000  
  21. *.pga_aggregate_target=1610612736  
  22. *.processes=500  
  23. *.remote_listener='dtydb-scan2:1521'  
  24. *.remote_login_passwordfile='exclusive'  
  25. *.resource_manager_plan='default_plan'  
  26. *.result_cache_mode='MANUAL'  
  27. *.sga_target=4399824896  
  28. hrdb3.thread=3  
  29. hrdb2.thread=2  
  30. hrdb1.thread=1  
  31. hrdb3.undo_tablespace='UNDOTBS1'  
  32. hrdb1.undo_tablespace='UNDOTBS3'  
  33. hrdb2.undo_tablespace='UNDOTBS2'  
  34.   
  35.   
  36. *.standby_file_management='auto'  

注意:cluster_database必须是false,undo_tablespace要和生产保持一致

 

 

3,启动备库的监听,新建pfile,spfile文件

 


startup pfile = '/oracle/app/oracle/admin/hrdb/inithrdb.ora' nomount;
create spfile from pfile='/oracle/app/oracle/admin/hrdb/inithrdb.ora';

startup nomount 启动到mount状态

 

4,登录到备份数据库,开始rman备份

 

[sql] view plaincopy
  1. alter system switch log file;  
  2. 多运行几次  
  3.   
  4. rman target /   
  5. run {   
  6.  allocate channel c1 type disk;  
  7.  allocate channel c2 type disk;  
  8.  backup database format '/data/backup/hrdbprim-%U' ;  
  9.  backup archivelog all delete all input format '/data/backup/ARC_%U';  
  10.  }  
  11.    
  12. backup database format '/data/backup/hrdbprim-%U';  
  13. backup current controlfile format '/data/backup/%d_control_%s_%c_%p_%T.ctl';  
  14. backup archivelog all format '/data/backup/%d_arch_%s_%c_%p_%T.bak';   
  15.    
  16. backup current controlfile format '/data/backup/%d_control_%s_%c_%p_%T.ctl';  
  17.    
5,传输备份文件到备库 ,注意最好在同一个目录,要不还需要地址转换,包括备份的控制文件,备份的数据文件和密码文件等

 

 

6,备份主机运行如下命令,开始备份

[sql] view plaincopy
  1. rman target sys/oracle@hrdb_source auxiliary sys/oracle  
  2.   
  3.    
  4. RUN  
  5. {  
  6.   # The DUPLICATE command uses an automatic sbt channel.  
  7.   # Because the target datafiles are spread across multiple directories,   
  8.   # run SET NEWNAME rather than DB_FILE_NAME_CONVERT  
  9.   SET NEWNAME FOR DATAFILE 1 TO '+DATA/hrdb/datafile/system01.dbf';   
  10.   SET NEWNAME FOR DATAFILE 2 TO '+DATA/hrdb/datafile/sysaux01.dbf';   
  11.   SET NEWNAME FOR DATAFILE 3 TO '+DATA/hrdb/datafile/undotbs03.dbf';   
  12.   SET NEWNAME FOR DATAFILE 4 TO '+DATA/hrdb/datafile/users01.dbf';   
  13.   # Do not set a newname for datafile 7, because it is in the tools tablespace,  
  14.   # and you are excluding tools from the duplicate database.  
  15.   #SET NEWNAME FOR DATAFILE 8 TO '/oradata7/users01.dbf';   
  16.   DUPLICATE TARGET DATABASE TO hrdb    
  17.     LOGFILE  
  18.     GROUP 7 ('+DATA/tyolap/onlinelog/redo31a'SIZE 50m REUSE,   
  19.     GROUP 8 ('+DATA/tyolap/onlinelog/redo32a'SIZE 50m REUSE;  
  20. }  
  21.   
  22. duplicate target database to hrdb nofilenamecheck;  
  23.   
  24.   
  25. run {  
  26.  allocate channel c1 device type disk;  
  27.  restore controlfile from '/oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120802-01';  
  28.  alter database mount;  
  29.  }  

7,运行结果如下,显示rman恢复成功

 

 

[sql] view plaincopy
  1. [oracle@dtydb5 ~]$ rman target sys/oracle@hrdb_source auxiliary sys/oracle  
  2.   
  3. 恢复管理器: Release 11.2.0.2.0 - Production on 星期五 8月 3 15:02:31 2012  
  4.   
  5. Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.  
  6.   
  7. 已连接到目标数据库: HRDBPRIM (DBID=4034584542)  
  8. 已连接到辅助数据库: HRDB (未装载)  
  9.   
  10. RMAN> RUN  
  11. 2> {  
  12. 3>   # The DUPLICATE command uses an automatic sbt channel.  
  13. 4>   # Because the target datafiles are spread across multiple directories,   
  14. 5>   # run SET NEWNAME rather than DB_FILE_NAME_CONVERT  
  15. 6>   SET NEWNAME FOR DATAFILE 1 TO '+DATA/hrdb/datafile/system01.dbf';   
  16. 7>   SET NEWNAME FOR DATAFILE 2 TO '+DATA/hrdb/datafile/sysaux01.dbf';   
  17. 8>   SET NEWNAME FOR DATAFILE 3 TO '+DATA/hrdb/datafile/undotbs03.dbf';   
  18. 9>   SET NEWNAME FOR DATAFILE 4 TO '+DATA/hrdb/datafile/users01.dbf';   
  19. 10>   # Do not set a newname for datafile 7, because it is in the tools tablespace,  
  20. 11>   # and you are excluding tools from the duplicate database.  
  21. 12>   #SET NEWNAME FOR DATAFILE 8 TO '/oradata7/users01.dbf';   
  22. 13>   DUPLICATE TARGET DATABASE TO hrdb    
  23. 14>     LOGFILE  
  24. 15>     GROUP 7 ('+DATA/tyolap/onlinelog/redo31a'SIZE 50m REUSE,   
  25. 16>     GROUP 8 ('+DATA/tyolap/onlinelog/redo32a'SIZE 50m REUSE;  
  26. 17> }  
  27.   
  28. 正在执行命令: SET NEWNAME  
  29.   
  30. 正在执行命令: SET NEWNAME  
  31.   
  32. 正在执行命令: SET NEWNAME  
  33.   
  34. 正在执行命令: SET NEWNAME  
  35.   
  36. 启动 Duplicate Db 于 2012-08-03 15:02:44  
  37. 使用目标数据库控制文件替代恢复目录  
  38. 分配的通道: ORA_AUX_DISK_1  
  39. 通道 ORA_AUX_DISK_1: SID=26 设备类型=DISK  
  40.   
  41. 内存脚本的内容:  
  42. {  
  43.    sql clone "alter system set  db_name =   
  44.  ''HRDBPRIM'' comment=  
  45.  ''Modified by RMAN duplicate'' scope=spfile";  
  46.    sql clone "alter system set  db_unique_name =   
  47.  ''HRDB'' comment=  
  48.  ''Modified by RMAN duplicate'' scope=spfile";  
  49.    shutdown clone immediate;  
  50.    startup clone force nomount  
  51.    restore clone primary controlfile;  
  52.    alter clone database mount;  
  53. }  
  54. 正在执行内存脚本  
  55.   
  56. sql 语句: alter system set  db_name =  ''HRDBPRIM'' comment= ''Modified by RMAN duplicate'' scope=spfile  
  57.   
  58. sql 语句: alter system set  db_unique_name =  ''HRDB'' comment= ''Modified by RMAN duplicate'' scope=spfile  
  59.   
  60. Oracle 实例已关闭  
  61.   
  62. Oracle 实例已启动  
  63.   
  64. 系统全局区域总计    4392697856 字节  
  65.   
  66. Fixed Size                     2233616 字节  
  67. Variable Size                838863600 字节  
  68. Database Buffers            3539992576 字节  
  69. Redo Buffers                  11608064 字节  
  70.   
  71. 启动 restore 于 2012-08-03 15:03:08  
  72. 分配的通道: ORA_AUX_DISK_1  
  73. 通道 ORA_AUX_DISK_1: SID=1 设备类型=DISK  
  74.   
  75. 通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集  
  76. 通道 ORA_AUX_DISK_1: 正在还原控制文件  
  77. 通道 ORA_AUX_DISK_1: 正在读取备份片段 /oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120803-07  
  78. 通道 ORA_AUX_DISK_1: ORA-19870: 还原备份片段 /oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120803-07 时出错  
  79. ORA-19505: 无法识别文件"/oracle/app/oracle/product/11.2.0/db_1/dbs/c-4034584542-20120803-07"  
  80. ORA-27037: 无法获得文件状态  
  81. Linux-x86_64 Error: 2: No such file or directory  
  82. Additional information: 3  
  83.   
  84. 故障转移到上一个备份  
  85.   
  86. 通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集  
  87. 通道 ORA_AUX_DISK_1: 正在还原控制文件  
  88. 通道 ORA_AUX_DISK_1: 正在读取备份片段 /data/backup/HRDBPRIM_control_48_1_1_20120803.ctl  
  89. 通道 ORA_AUX_DISK_1: 段句柄 = /data/backup/HRDBPRIM_control_48_1_1_20120803.ctl 标记 = TAG20120803T142924  
  90. 通道 ORA_AUX_DISK_1: 已还原备份片段 1  
  91. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:03  
  92. 输出文件名=+DATA/hrdb/controlfile/control01.ctl  
  93. 输出文件名=+FRA/hrdb/controlfile/control02.ctl  
  94. 完成 restore 于 2012-08-03 15:03:12  
  95.   
  96. 数据库已装载  
  97.   
  98. 内存脚本的内容:  
  99. {  
  100.    set until scn  1076103;  
  101.    set newname for datafile  1 to   
  102.  "+DATA/hrdb/datafile/system01.dbf";  
  103.    set newname for datafile  2 to   
  104.  "+DATA/hrdb/datafile/sysaux01.dbf";  
  105.    set newname for datafile  3 to   
  106.  "+DATA/hrdb/datafile/undotbs03.dbf";  
  107.    set newname for datafile  4 to   
  108.  "+DATA/hrdb/datafile/users01.dbf";  
  109.    restore  
  110.    clone database  
  111.    ;  
  112. }  
  113. 正在执行内存脚本  
  114.   
  115. 正在执行命令: SET until clause  
  116.   
  117. 正在执行命令: SET NEWNAME  
  118.   
  119. 正在执行命令: SET NEWNAME  
  120.   
  121. 正在执行命令: SET NEWNAME  
  122.   
  123. 正在执行命令: SET NEWNAME  
  124.   
  125. 启动 restore 于 2012-08-03 15:03:17  
  126. 使用通道 ORA_AUX_DISK_1  
  127.   
  128. 通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集  
  129. 通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件  
  130. 通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 +DATA/hrdb/datafile/system01.dbf  
  131. 通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 +DATA/hrdb/datafile/sysaux01.dbf  
  132. 通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 +DATA/hrdb/datafile/undotbs03.dbf  
  133. 通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 +DATA/hrdb/datafile/users01.dbf  
  134. 通道 ORA_AUX_DISK_1: 正在读取备份片段 /data/backup/hrdbprim-1anhnl0f_1_1  
  135. 通道 ORA_AUX_DISK_1: 段句柄 = /data/backup/hrdbprim-1anhnl0f_1_1 标记 = TAG20120803T142830  
  136. 通道 ORA_AUX_DISK_1: 已还原备份片段 1  
  137. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:16  
  138. 完成 restore 于 2012-08-03 15:03:33  
  139.   
  140. 内存脚本的内容:  
  141. {  
  142.    switch clone datafile all;  
  143. }  
  144. 正在执行内存脚本  
  145.   
  146. 数据文件 1 已转换成数据文件副本  
  147. 输入数据文件副本 RECID=5 STAMP=790355013 文件名=+DATA/hrdb/datafile/system01.dbf  
  148. 数据文件 2 已转换成数据文件副本  
  149. 输入数据文件副本 RECID=6 STAMP=790355013 文件名=+DATA/hrdb/datafile/sysaux01.dbf  
  150. 数据文件 3 已转换成数据文件副本  
  151. 输入数据文件副本 RECID=7 STAMP=790355013 文件名=+DATA/hrdb/datafile/undotbs03.dbf  
  152. 数据文件 4 已转换成数据文件副本  
  153. 输入数据文件副本 RECID=8 STAMP=790355013 文件名=+DATA/hrdb/datafile/users01.dbf  
  154.   
  155. 内存脚本的内容:  
  156. {  
  157.    set until scn  1076103;  
  158.    recover  
  159.    clone database  
  160.     delete archivelog  
  161.    ;  
  162. }  
  163. 正在执行内存脚本  
  164.   
  165. 正在执行命令: SET until clause  
  166.   
  167. 启动 recover 于 2012-08-03 15:03:33  
  168. 使用通道 ORA_AUX_DISK_1  
  169.   
  170. 正在开始介质的恢复  
  171.   
  172. 通道 ORA_AUX_DISK_1: 正在开始将归档日志还原到默认目标  
  173. 通道 ORA_AUX_DISK_1: 正在还原归档日志  
  174. 归档日志线程=1 序列=18  
  175. 通道 ORA_AUX_DISK_1: 正在读取备份片段 /data/backup/HRDBPRIM_arch_46_1_1_20120803.bak  
  176. 通道 ORA_AUX_DISK_1: 段句柄 = /data/backup/HRDBPRIM_arch_46_1_1_20120803.bak 标记 = TAG20120803T142917  
  177. 通道 ORA_AUX_DISK_1: 已还原备份片段 1  
  178. 通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01  
  179. 归档日志文件名=+FRA/hrdb/archivelog/2012_08_03/thread_1_seq_18.490.790355017 线程=1 序列=18  
  180. 通道 clone_default: 正在删除归档日志  
  181. 归档日志文件名=+FRA/hrdb/archivelog/2012_08_03/thread_1_seq_18.490.790355017 RECID=15 STAMP=790355016  
  182. 介质恢复完成, 用时: 00:00:01  
  183. 完成 recover 于 2012-08-03 15:03:38  
  184. Oracle 实例已启动  
  185.   
  186. 系统全局区域总计    4392697856 字节  
  187.   
  188. Fixed Size                     2233616 字节  
  189. Variable Size                838863600 字节  
  190. Database Buffers            3539992576 字节  
  191. Redo Buffers                  11608064 字节  
  192.   
  193. 内存脚本的内容:  
  194. {  
  195.    sql clone "alter system set  db_name =   
  196.  ''HRDB'' comment=  
  197.  ''Reset to original value by RMAN'' scope=spfile";  
  198.    sql clone "alter system reset  db_unique_name scope=spfile";  
  199.    shutdown clone immediate;  
  200.    startup clone nomount;  
  201. }  
  202. 正在执行内存脚本  
  203.   
  204. sql 语句: alter system set  db_name =  ''HRDB'' comment= ''Reset to original value by RMAN'' scope=spfile  
  205.   
  206. sql 语句: alter system reset  db_unique_name scope=spfile  
  207.   
  208. Oracle 实例已关闭  
  209.   
  210. 已连接到辅助数据库 (未启动)  
  211. Oracle 实例已启动  
  212.   
  213. 系统全局区域总计    4392697856 字节  
  214.   
  215. Fixed Size                     2233616 字节  
  216. Variable Size                838863600 字节  
  217. Database Buffers            3539992576 字节  
  218. Redo Buffers                  11608064 字节  
  219. sql 语句: CREATE CONTROLFILE REUSE SET DATABASE "HRDB" RESETLOGS ARCHIVELOG   
  220.   MAXLOGFILES     16  
  221.   MAXLOGMEMBERS      3  
  222.   MAXDATAFILES      100  
  223.   MAXINSTANCES     8  
  224.   MAXLOGHISTORY      292  
  225.  LOGFILE  
  226.   GROUP  7 ( '+DATA/tyolap/onlinelog/redo31a' ) SIZE 50 M  REUSE,  
  227.   GROUP  8 ( '+DATA/tyolap/onlinelog/redo32a' ) SIZE 50 M  REUSE  
  228.  DATAFILE  
  229.   '+DATA/hrdb/datafile/system01.dbf'  
  230.  CHARACTER SET ZHS16GBK  
  231.   
  232.   
  233. 内存脚本的内容:  
  234. {  
  235.    set newname for clone tempfile  1 to new;  
  236.    switch clone tempfile all;  
  237.    catalog clone datafilecopy  "+DATA/hrdb/datafile/sysaux01.dbf",   
  238.  "+DATA/hrdb/datafile/undotbs03.dbf",   
  239.  "+DATA/hrdb/datafile/users01.dbf";  
  240.    switch clone datafile all;  
  241. }  
  242. 正在执行内存脚本  
  243.   
  244. 正在执行命令: SET NEWNAME  
  245.   
  246. 临时文件 1 在控制文件中已重命名为 +DATA  
  247.   
  248. 已将数据文件副本列入目录  
  249. 数据文件副本文件名=+DATA/hrdb/datafile/sysaux01.dbf RECID=1 STAMP=790355060  
  250. 已将数据文件副本列入目录  
  251. 数据文件副本文件名=+DATA/hrdb/datafile/undotbs03.dbf RECID=2 STAMP=790355060  
  252. 已将数据文件副本列入目录  
  253. 数据文件副本文件名=+DATA/hrdb/datafile/users01.dbf RECID=3 STAMP=790355060  
  254.   
  255. 数据文件 2 已转换成数据文件副本  
  256. 输入数据文件副本 RECID=1 STAMP=790355060 文件名=+DATA/hrdb/datafile/sysaux01.dbf  
  257. 数据文件 3 已转换成数据文件副本  
  258. 输入数据文件副本 RECID=2 STAMP=790355060 文件名=+DATA/hrdb/datafile/undotbs03.dbf  
  259. 数据文件 4 已转换成数据文件副本  
  260. 输入数据文件副本 RECID=3 STAMP=790355060 文件名=+DATA/hrdb/datafile/users01.dbf  
  261.   
  262. 内存脚本的内容:  
  263. {  
  264.    Alter clone database open resetlogs;  
  265. }  
  266. 正在执行内存脚本  
  267.   
  268. 数据库已打开  
  269. 完成 Duplicate Db 于 2012-08-03 15:04:26  

标签:rman duplicate实现数据库的迁移(使用target库备份) 

solgle.com 版权所有,欢迎分享!!!

相关评论
 img1 img2 img3 img4 img5 img6 img7 img8 img9 img10
评论者:      验证码:  点击获取验证码
   Copyright © 2013-2028 solgle.com,All rights reserved.[solgle.com] 公安机关备案号:51010802000219
Email:solgle@solgle.com; weixin:cd1008610000 ICP:蜀ICP备14011070号-1