ORACLE RMAN異機異目錄恢復

darren__chan發表於2014-11-13
原文地址: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部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-1331061/,如需轉載,請註明出處,否則將追究法律責任。

相關文章