ORACLE RMAN异机异目录恢复

原文地址:http://blog.csdn.net/wshxgxiaoli/article/details/9627089

1. 环境: 原机: 192.168.102.156
              目标机: 192.168.102.157

2. 需求: 将原机所在的控制文件,数据文件, REDOLOG恢复到/home/oracle/oradata/datafile下

3. 参数文件准备
3.1 在原库生成PFILE文件。

[sql]  view plain copy
  1. SQL> create pfile='/home/oracle/initgg1.ora' from spfile;  
  2.   
  3. File created.  


3.2  奖参数文件移至目标库。

[sql]  view plain copy
  1. [oracle@GOLDENGATE1 ~]$ scp initgg1.ora oracle@192.168.102.157:/home/oracle  
  2. oracle@192.168.102.157's password:   
  3. initgg1.ora                                                                                                100% 1051     1.0KB/s   00:00    


4. 将目标库启动至NOMOUN状态。
4.1 修改参数文件:

[sql]  view plain copy
  1. *.control_files='/home/oracle/oradata/datafile/control01.ctl','/home/oracle/oradata/datafile/control02.ctl','/home/oracle/oradata/datafile/control03.ctl'  
  2. *.core_dump_dest='/home/oracle/admin/gg1/cdump'  


4.2 创建PFILE所需要的目录。

[sql]  view plain copy
  1. [oracle@GOLDENGATE2 ~]$ mkdir -p admin/gg1/adump  
  2. [oracle@GOLDENGATE2 ~]$ mkdir -p admin/gg1/cdump  
  3. [oracle@GOLDENGATE2 ~]$ mkdir -p admin/gg1/bdump  
  4. [oracle@GOLDENGATE2 ~]$ mkdir -p admin/gg1/udump  
  5. [oracle@GOLDENGATE2 ~]$ mkdir oradata/datafile  


4.3 将目标库启动到NOMOUNT状态。

[delphi]  view plain copy
  1. [oracle@GOLDENGATE2 ~]$ export ORACLE_SID=gg1  
  2. [oracle@GOLDENGATE2 ~]$ sqlplus / as sysdba  
  3.   
  4. SQL*Plus: Release 10.2.0.1.0 - Production on Fri Sep 21 03:48:06 2012  
  5.   
  6. Copyright (c) 19822005, Oracle.  All rights reserved.  
  7.   
  8. Connected to an idle instance.  
  9.   
  10. SQL> startup nomount pfile='/home/oracle/initgg1.ora';  
  11. ORACLE instance started.  
  12.   
  13. Total System Global Area  167772160 bytes  
  14. Fixed Size                  1218292 bytes  
  15. Variable Size              83888396 bytes  
  16. Database Buffers           75497472 bytes  
  17. Redo Buffers                7168000 bytes  


5. 备份文件准备。
5.1 备份原库。

[sql]  view plain copy
  1. [oracle@GOLDENGATE1 ~]$ rman target /  
  2.   
  3. Recovery Manager: Release 10.2.0.1.0 - Production on Fri Sep 21 02:08:38 2012  
  4.   
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.   
  7. connected to target database: GG1 (DBID=1620494887)  
  8.   
  9. RMAN> backup format='/home/oracle/rman/full_%d_%T_%s' database include current controlfile plus archivelog;  
  10.   
  11.   
  12. Starting backup at 21-SEP-12  
  13. current log archived  
  14. using target database control file instead of recovery catalog  
  15. allocated channel: ORA_DISK_1  
  16. channel ORA_DISK_1: sid=141 devtype=DISK  
  17. channel ORA_DISK_1: starting archive log backupset  
  18. channel ORA_DISK_1: specifying archive log(s) in backup set  
  19. input archive log thread=1 sequence=4 recid=1 stamp=794527523  
  20. input archive log thread=1 sequence=5 recid=2 stamp=794538401  
  21. input archive log thread=1 sequence=6 recid=3 stamp=794539337  
  22. input archive log thread=1 sequence=7 recid=4 stamp=794539385  
  23. input archive log thread=1 sequence=8 recid=5 stamp=794539992  
  24. input archive log thread=1 sequence=9 recid=6 stamp=794542152  
  25. channel ORA_DISK_1: starting piece 1 at 21-SEP-12  
  26. channel ORA_DISK_1: finished piece 1 at 21-SEP-12  
  27. piece handle=/home/oracle/rman/full_GG1_20120921_17 tag=TAG20120921T020913 comment=NONE  
  28. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04  
  29. Finished backup at 21-SEP-12  
  30.   
  31. Starting backup at 21-SEP-12  
  32. using channel ORA_DISK_1  
  33. channel ORA_DISK_1: starting full datafile backupset  
  34. channel ORA_DISK_1: specifying datafile(s) in backupset  
  35. input datafile fno=00006 name=/home/oracle/oradata/gg1/gg01.dbf  
  36. input datafile fno=00001 name=/home/oracle/oradata/gg1/system01.dbf  
  37. input datafile fno=00003 name=/home/oracle/oradata/gg1/sysaux01.dbf  
  38. input datafile fno=00005 name=/home/oracle/oradata/gg1/example01.dbf  
  39. input datafile fno=00002 name=/home/oracle/oradata/gg1/undotbs01.dbf  
  40. input datafile fno=00004 name=/home/oracle/oradata/gg1/users01.dbf  
  41. channel ORA_DISK_1: starting piece 1 at 21-SEP-12  
  42. channel ORA_DISK_1: finished piece 1 at 21-SEP-12  
  43. piece handle=/home/oracle/rman/full_GG1_20120921_18 tag=TAG20120921T020917 comment=NONE  
  44. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:56  
  45. channel ORA_DISK_1: starting full datafile backupset  
  46. channel ORA_DISK_1: specifying datafile(s) in backupset  
  47. including current control file in backupset  
  48. including current SPFILE in backupset  
  49. channel ORA_DISK_1: starting piece 1 at 21-SEP-12  
  50. channel ORA_DISK_1: finished piece 1 at 21-SEP-12  
  51. piece handle=/home/oracle/rman/full_GG1_20120921_19 tag=TAG20120921T020917 comment=NONE  
  52. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02  
  53. Finished backup at 21-SEP-12  
  54.   
  55. Starting backup at 21-SEP-12  
  56. current log archived  
  57. using channel ORA_DISK_1  
  58. channel ORA_DISK_1: starting archive log backupset  
  59. channel ORA_DISK_1: specifying archive log(s) in backup set  
  60. input archive log thread=1 sequence=10 recid=7 stamp=794542215  
  61. channel ORA_DISK_1: starting piece 1 at 21-SEP-12  
  62. channel ORA_DISK_1: finished piece 1 at 21-SEP-12  
  63. piece handle=/home/oracle/rman/full_GG1_20120921_20 tag=TAG20120921T021016 comment=NONE  
  64. channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02  
  65. Finished backup at 21-SEP-12  
  66.   
  67. RMAN>   


5.2 将备份移至目标机:

[delphi]  view plain copy
  1. [oracle@GOLDENGATE1 rman]$ scp * 192.168.102.157:/home/oracle/rman  
  2. oracle@192.168.102.157's password:   
  3. full_GG1_20120921_17                                                               100%   40MB  19.9MB/s   00:02      
  4. full_GG1_20120921_18                                                               100%  594MB  10.4MB/s   00:57      
  5. full_GG1_20120921_19                                                               100% 6976KB   6.8MB/s   00:01      
  6. full_GG1_20120921_20                                                               100%   12KB  12.0KB/s   00:00      
  7. [oracle@GOLDENGATE1 rman]$   


6. 在目标机上面恢复控制文件, 并将数据库启动到MOUNT状态。

[delphi]  view plain copy
  1. [oracle@GOLDENGATE2 ~]$ rman target /  
  2.   
  3. Recovery Manager: Release 10.2.0.1.0 - Production on Fri Sep 21 03:50:44 2012  
  4.   
  5. Copyright (c) 19822005, Oracle.  All rights reserved.  
  6.   
  7. connected to target database: gg1 (not mounted)  
  8.   
  9. RMAN> restore controlfile from '/home/oracle/rman/full_GG1_20120921_19';  
  10.   
  11. Starting restore at 21-SEP-12  
  12. using target database control file instead of recovery catalog  
  13. allocated channel: ORA_DISK_1  
  14. channel ORA_DISK_1: sid=156 devtype=DISK  
  15.   
  16. channel ORA_DISK_1: restoring control file  
  17. channel ORA_DISK_1: restore complete, elapsed time: 00:00:02  
  18. output filename=/home/oracle/oradata/datafile/control01.ctl  
  19. output filename=/home/oracle/oradata/datafile/control02.ctl  
  20. output filename=/home/oracle/oradata/datafile/control03.ctl  
  21. Finished restore at 21-SEP-12  
  22.   
  23. RMAN> alter database mount;  
  24.   
  25. database mounted  
  26. released channel: ORA_DISK_1  


7. 恢复数据文件。

[sql]  view plain copy
  1. RMAN> run{    
  2. set newname for datafile 1 to '/home/oracle/oradata/datafile/system01.dbf';  
  3. set newname for datafile 2 to '/home/oracle/oradata/datafile/undotbs01.dbf';  
  4. set newname for datafile 3 to '/home/oracle/oradata/datafile/sysaux01.dbf';  
  5. set newname for datafile 4 to '/home/oracle/oradata/datafile/users01.dbf';  
  6. set newname for datafile 5 to '/home/oracle/oradata/datafile/example01.dbf';  
  7. set newname for datafile 6 to '/home/oracle/oradata/datafile/gg01.dbf';  
  8. restore database;  
  9. switch datafile all;  
  10. }2> 3> 4> 5> 6> 7> 8> 9> 10>   
  11.   
  12. executing command: SET NEWNAME  
  13.   
  14. executing command: SET NEWNAME  
  15.   
  16. executing command: SET NEWNAME  
  17.   
  18. executing command: SET NEWNAME  
  19.   
  20. executing command: SET NEWNAME  
  21.   
  22. executing command: SET NEWNAME  
  23.   
  24. Starting restore at 21-SEP-12  
  25. Starting implicit crosscheck backup at 21-SEP-12  
  26. allocated channel: ORA_DISK_1  
  27. channel ORA_DISK_1: sid=156 devtype=DISK  
  28. Crosschecked 2 objects  
  29. Finished implicit crosscheck backup at 21-SEP-12  
  30.   
  31. Starting implicit crosscheck copy at 21-SEP-12  
  32. using channel ORA_DISK_1  
  33. Finished implicit crosscheck copy at 21-SEP-12  
  34.   
  35. searching for all files in the recovery area  
  36. cataloging files...  
  37. no files cataloged  
  38.   
  39. using channel ORA_DISK_1  
  40.   
  41. channel ORA_DISK_1: starting datafile backupset restore  
  42. channel ORA_DISK_1: specifying datafile(s) to restore from backup set  
  43. restoring datafile 00001 to /home/oracle/oradata/datafile/system01.dbf  
  44. restoring datafile 00002 to /home/oracle/oradata/datafile/undotbs01.dbf  
  45. restoring datafile 00003 to /home/oracle/oradata/datafile/sysaux01.dbf  
  46. restoring datafile 00004 to /home/oracle/oradata/datafile/users01.dbf  
  47. restoring datafile 00005 to /home/oracle/oradata/datafile/example01.dbf  
  48. restoring datafile 00006 to /home/oracle/oradata/datafile/gg01.dbf  
  49. channel ORA_DISK_1: reading from backup piece /home/oracle/rman/full_GG1_20120921_18  
  50. channel ORA_DISK_1: restored backup piece 1  
  51. piece handle=/home/oracle/rman/full_GG1_20120921_18 tag=TAG20120921T020917  
  52. channel ORA_DISK_1: restore complete, elapsed time: 00:00:46  
  53. Finished restore at 21-SEP-12  
  54.   
  55. datafile 1 switched to datafile copy  
  56. input datafile copy recid=8 stamp=794548607 filename=/home/oracle/oradata/datafile/system01.dbf  
  57. datafile 2 switched to datafile copy  
  58. input datafile copy recid=9 stamp=794548607 filename=/home/oracle/oradata/datafile/undotbs01.dbf  
  59. datafile 3 switched to datafile copy  
  60. input datafile copy recid=10 stamp=794548607 filename=/home/oracle/oradata/datafile/sysaux01.dbf  
  61. datafile 4 switched to datafile copy  
  62. input datafile copy recid=11 stamp=794548607 filename=/home/oracle/oradata/datafile/users01.dbf  
  63. datafile 5 switched to datafile copy  
  64. input datafile copy recid=12 stamp=794548607 filename=/home/oracle/oradata/datafile/example01.dbf  
  65. datafile 6 switched to datafile copy  
  66. input datafile copy recid=13 stamp=794548607 filename=/home/oracle/oradata/datafile/gg01.dbf  
  67.   
  68. RMAN>   


8. 恢复数据库应用日志。

[sql]  view plain copy
  1. SQL> recover adtabase using backup controlfile until cancel;  
  2. ORA-00905: missing keyword  
  3.   
  4.   
  5. SQL> recover database using backup controlfile until cancel;  
  6. ORA-00279: change 531086 generated at 09/21/2012 02:09:18 needed for thread 1  
  7. ORA-00289: suggestion : /home/oracle/archivelog/1_10_794474474.dbf  
  8. ORA-00280: change 531086 for thread 1 is in sequence #10  
  9.   
  10.   
  11. Specify log: {=suggested | filename | AUTO | CANCEL}  
  12. cancel  
  13. Media recovery cancelled.  
  14. SQL> alter database open resetlogs;  
  15. alter database open resetlogs  
  16. *  
  17. ERROR at line 1:  
  18. ORA-00344: unable to re-create online log '/home/oracle/oradata/gg1/redo01.log'  
  19. ORA-27040: file create error, unable to create file  
  20. Linux Error: 2: No such file or directory  


这里在打开数据库时出现错误, 原因是因为在打开数据库时, ORACLE 会根据控制文件来创建,这里控制文件记录的位置,目标机上并没有, 所以我们在打开数据库时创建这个目录。

[sql]  view plain copy
  1. [oracle@GOLDENGATE2 oradata]$ mkdir gg1  
  2. [oracle@GOLDENGATE2 oradata]$ sqlplus / as sysdba  
  3.   
  4. SQL*Plus: Release 10.2.0.1.0 - Production on Fri Sep 21 04:03:20 2012  
  5.   
  6. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  7.   
  8.   
  9. Connected to:  
  10. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production  
  11. With the Partitioning, OLAP and Data Mining options  
  12.   
  13. SQL> alter database open resetlogs;  
  14.   
  15. Database altered.  


在这里会自动创建REDO和临时表空间数据文件。

9. 将日志文件重创建到/home/oracle/oradata/datafile下。

[sql]  view plain copy
  1. SQL> select group#,bytes/1024/1024||'M',status from v$log;  
  2.   
  3.     GROUP# BYTES/1024/1024||'M'                      STATUS  
  4. ---------- ----------------------------------------- ----------------  
  5.          1 50M                                       UNUSED  
  6.          2 50M                                       UNUSED  
  7.          3 50M                                       CURRENT  
  8.   
  9. SQL> alter database drop logfile group 1;  
  10.   
  11. Database altered.  
  12.   
  13. SQL> alter database add logfile group 1('/home/oracle/oradata/datafile/redo01.log'size 50m;  
  14.   
  15. Database altered.  
  16.   
  17. SQL> alter database drop logfile group 2;  
  18.   
  19. Database altered.  
  20.   
  21. SQL> alter database add logfile group 2('/home/oracle/oradata/datafile/redo02.log'size 50m;  
  22.   
  23. Database altered.  
  24.   
  25. SQL> alter system switch logfile;  
  26.   
  27. System altered.  
  28.   
  29. SQL> alter system switch logfile;  
  30.   
  31. System altered.  
  32.   
  33. SQL> select group#,bytes/1024/1024||'M',status from v$log;  
  34.   
  35.     GROUP# BYTES/1024/1024||'M'                      STATUS  
  36. ---------- ----------------------------------------- ----------------  
  37.          1 50M                                       ACTIVE  
  38.          2 50M                                       CURRENT  
  39.          3 50M                                       INACTIVE  
  40.   
  41. SQL> alter database drop logfile group 3;  
  42.   
  43. Database altered.  
  44.   
  45. SQL> alter database add logfile group 3('/home/oracle/oradata/datafile/redo03.log'size 50m;  
  46.   
  47. Database altered.  
  48.   
  49. SQL> select member from v$logfile;  
  50.   
  51. MEMBER  
  52. --------------------------------------------------------------------------------  
  53. /home/oracle/oradata/datafile/redo03.log  
  54. /home/oracle/oradata/datafile/redo02.log  
  55. /home/oracle/oradata/datafile/redo01.log  


10. 处理临时表空间文件。
查询临时文件:

[sql]  view plain copy
  1. SQL> select name from v$tempfile;  
  2.   
  3. NAME  
  4. --------------------------------------------------------------------------------  
  5. /home/oracle/oradata/gg1/temp01.dbf  


将临时表空间置为OFFLINE状态:

[sql]  view plain copy
  1. SQL> alter database tempfile '/home/oracle/oradata/gg1/temp01.dbf' offline;  
  2.   
  3. Database altered.  


主机移动文件位置:

[sql]  view plain copy
  1. SQL> !mv /home/oracle/oradata/gg1/temp01.dbf /home/oracle/oradata/datafile/temp01.dbf  


在控制文件中修改临时文件位置:

[sql]  view plain copy
  1. SQL> alter database rename file '/home/oracle/oradata/gg1/temp01.dbf' to '/home/oracle/oradata/datafile/temp01.dbf';  
  2.   
  3. Database altered.  


置临时表空间为ONLINE:

[sql]  view plain copy
  1. SQL> alter database tempfile '/home/oracle/oradata/datafile/temp01.dbf' online;  
  2.   
  3. Database altered.  


查询临时表空间文件:

[sql]  view plain copy
  1. SQL> select name from v$tempfile;  
  2.   
  3. NAME  
  4. --------------------------------------------------------------------------------  
  5. /home/oracle/oradata/datafile/temp01.dbf  


11. 关闭数据库,创建SPFILE文件,启动数据库

[sql]  view plain copy
  1. SQL> shutdown immediate;  
  2. Database closed.  
  3. Database dismounted.  
  4. ORACLE instance shut down.  
  5. SQL> create spfile from pfile='/home/oracle/initgg1.ora';  
  6.   
  7. File created.  
  8.   
  9. SQL> startup  
  10. ORACLE instance started.  
  11.   
  12. Total System Global Area  167772160 bytes  
  13. Fixed Size                  1218292 bytes  
  14. Variable Size              83888396 bytes  
  15. Database Buffers           75497472 bytes  
  16. Redo Buffers                7168000 bytes  
  17. Database mounted.  
  18. Database opened.  
  19. SQL>   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值