ITPub博客

首页 > 数据库 > Oracle > ORACLE RMAN异机异目录恢复

ORACLE RMAN异机异目录恢复

Oracle 作者:darren__chan 时间:2014-11-13 13:29:03 0 删除 编辑
原文地址: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)  1982 ,  2005 , 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)  1982 ,  2005 , 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>   

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29863023/viewspace-1331061/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
一思尚存,此志不懈

注册时间:2014-09-09

  • 博文量
    210
  • 访问量
    1344206