Oracle冷备份与恢复及案例分析

1、手动进行冷备份

  1. [oracle@linuxForOra ~]$ sqlplus /nolog  
  2.    
  3. SQL*Plus: Release 10.2.0.1.0 - Production on Sun Sep 4 20:56:11 2011  
  4.    
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.    
  7. SQL> conn / as sysdba;  
  8. Connected.  
  9. SQL> select name from v$datafile;  
  10.    
  11. NAME  
  12. --------------------------------------------------------------------------------  
  13. /u01/oracle/oradata/general10g/system01.dbf  
  14. /u01/oracle/oradata/general10g/undotbs01.dbf  
  15. /u01/oracle/oradata/general10g/sysaux01.dbf  
  16. /u01/oracle/oradata/general10g/users01.dbf  
  17. /u01/oracle/oradata/general10g/example01.dbf  
  18.    
  19. SQL> select name from v$controlfile;  
  20.    
  21. NAME  
  22. --------------------------------------------------------------------------------  
  23. /u01/oracle/oradata/general10g/control01.ctl  
  24. /u01/oracle/oradata/general10g/control02.ctl  
  25. /u01/oracle/oradata/general10g/control03.ctl  
  26. /u01/oracle/oradata/general10g/control04.ctl  
  27.    
  28. SQL> select member from v$logfile;  
  29.    
  30. MEMBER  
  31. --------------------------------------------------------------------------------  
  32. /u01/oracle/oradata/general10g/redo03.log  
  33. /u01/oracle/oradata/general10g/redo02.log  
  34. /u01/oracle/oradata/general10g/redo01.log  
  35.    
  36. SQL> shutdown immediate;  
  37. Database closed.  
  38. Database dismounted.  
  39. ORACLE instance shut down.  
  40. SQL> !  
  41. [oracle@linuxForOra ~]$ cp /u01/oracle/oradata/general10g/*.dbf /u01/oracle/coldbackup/  
  42. [oracle@linuxForOra ~]$ cp /u01/oracle/oradata/general10g/*.ctl /u01/oracle/coldbackup/  
  43. [oracle@linuxForOra ~]$ cp /u01/oracle/oradata/general10g/*.log /u01/oracle/coldbackup/  
  44. [oracle@linuxForOra ~]$   

上述的基本情况就是:关闭数据库的状态下,利用linux拷贝命令,将数据文件、控制文件、重做日志文件备份到相应的位置。
2、为了更方便的进行冷备份,将冷备份的操作写成批处理脚本
[oracle@linuxForOra coldbackup]$ vi coldbak.sql 
第一种脚本:

  1. #rem desc:offline full backup database  
  2. $ORACLE_HOME/bin/sqlplus "/as sysdba" <<EOF  
  3. #--shutdown database  
  4. shutdown immediate  
  5. #--Copy Data file  
  6. !cp /u01/oracle/oradata/general10g/*.dbf /u01/oracle/coldbackup/  
  7. #--Copy Control file  
  8. !cp /u01/oracle/oradata/general10g/*.ctl /u01/oracle/coldbackup/  
  9. --Copy Log file  
  10. !cp /u01/oracle/oradata/general10g/*.log /u01/oracle/coldbackup/  
  11. #--startup database  
  12. startup  
第二种脚本:
  1. set pagesize 0 linesize 32767 feedback off verify off trimspool on termout off trimout on serveroutput on  
  2. define fil=/u01/oracle/coldbk.sql  
  3. define log=/u01/oracle/coldbk.log  
  4. spool &fil  
  5. prompt connect sys/syspass@general10g as sysdba;  
  6. prompt shutdown immediate;  
  7. select 'host cp ' || file_name || ' /u01/oracle/coldbackup'||substr(file_name,instr(file_name,'/',-1,1)) from dba_data_files;  
  8. prompt startup  
  9. spool off  
  10. spool &log  
  11. @&fil;  
  12. spool off;  
注意:脚本改成可执行权限
3、模拟相关文件丢失或者损坏情况下,利用冷备份进行恢复
(1)、非系统表空间数据文件丢失情况
状态:有非系统表空间,数据文件是cold_test.dbf,存在一张表create table cold_test(a int); 表中有数据:11,12
操作:查看非系统表空间,然后移除数据文件cold_test.dbf
  1. SQL> col status for a10;  
  2. SQL> col name for a60;  
  3. SQL> select status ,name from v$datafile;  
  4.   
  5. STATUS     NAME  
  6. ---------- ------------------------------------------------------------  
  7. SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  8. ONLINE     /u01/oracle/oradata/general10g/undotbs01.dbf  
  9. ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  10. ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  11. ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  12. ONLINE     /u01/oracle/oradata/general10g/cold_test.dbf  
  13.   
  14. 6 rows selected.  
  15.   
  16. SQL> !  
  17.   
  18. [oracle@linuxForOra general10g]$ rm -f cold_test.dbf  
  1. SQL> select  tablespace_name from dba_data_files where file_name='/u01/oracle/oradata/general10g/cold_test.dbf';  
  2.   
  3. TABLESPACE_NAME  
  4. ------------------------------  
  5. COLD_TEST  
  6.   
  7. SQL> select * from cold_test;  
  8. select * from cold_test  
  9.               *  
  10. ERROR at line 1:  
  11. ORA-01116: error in opening database file 6  
  12. ORA-01110: data file 6: '/u01/oracle/oradata/general10g/cold_test.dbf'  
  13. ORA-27041: unable to open file  
  14. Linux Error: 2: No such file or directory  
  15. Additional information: 3  
上步操作说明:删除用户数据文件,数据库还能正常工作,但是访问已删除的表空间的对象时会报错!
接下来使用先前的冷备份进行恢复
  1. SQL> select file#,status,name from v$datafile;  
  2.   
  3.      FILE# STATUS     NAME  
  4. ---------- ---------- --------------------------------------------------  
  5.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  6.          2 ONLINE     /u01/oracle/oradata/general10g/undotbs01.dbf  
  7.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  8.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  9.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  10.          6 ONLINE     /u01/oracle/oradata/general10g/cold_test.dbf  
  11.   
  12. 6 rows selected.  
  13.   
  14. SQL> alter database datafile 6 offline;  
  15.   
  16. Database altered.  
  17.   
  18.   
  19. SQL> select file#,status,name from v$datafile;  
  20.   
  21.      FILE# STATUS     NAME  
  22. ---------- ---------- --------------------------------------------------  
  23.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  24.          2 ONLINE     /u01/oracle/oradata/general10g/undotbs01.dbf  
  25.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  26.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  27.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  28.          6 RECOVER    /u01/oracle/oradata/general10g/cold_test.dbf  
  29.   
  30. 6 rows selected.  
  31.   
  32. SQL> !cp /u01/oracle/coldbackup/cold_test.dbf /u01/oracle/oradata/general10g  
  33.   
  34. SQL> recover datafile 6;  
  35. Media recovery complete.  
  36. SQL> select file#,status,name from v$datafile;  
  37.   
  38.      FILE# STATUS     NAME  
  39. ---------- ---------- --------------------------------------------------  
  40.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  41.          2 ONLINE     /u01/oracle/oradata/general10g/undotbs01.dbf  
  42.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  43.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  44.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  45.          6 OFFLINE    /u01/oracle/oradata/general10g/cold_test.dbf  
  46.   
  47. 6 rows selected.  
  48.   
  49. SQL> alter database datafile 6 online;  
  50.   
  51. Database altered.  
  52.   
  53. SQL> select file#,status,name from v$datafile;  
  54.   
  55.      FILE# STATUS     NAME  
  56. ---------- ---------- --------------------------------------------------  
  57.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  58.          2 ONLINE     /u01/oracle/oradata/general10g/undotbs01.dbf  
  59.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  60.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  61.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  62.          6 ONLINE     /u01/oracle/oradata/general10g/cold_test.dbf  
  63.   
  64. 6 rows selected.  
  65.   
  66. SQL> select * from cold_test;  
  67.   
  68.          A  
  69. ----------  
  70.         11  
  71.         22  
  72.   
  73. SQL>  
至此,使用冷备份恢复完成!
附加案例:
说明:如果没有先前冷备份的数据文件,具体操作如下:
关闭数据库,删除数据文件、启动:
  1. SQL> shutdown immediate;  
  2. Database closed.  
  3. Database dismounted.  
  4. ORACLE instance shut down.  
  5. SQL> !  
  6. [oracle@linuxForOra general10g]$ ls  
  7. cold_test.dbf  control03.ctl  redo01.log  sysaux01.dbf  undotbs01.dbf  
  8. control01.ctl  control04.ctl  redo02.log  system01.dbf  users01.dbf  
  9. control02.ctl  example01.dbf  redo03.log  temp01.dbf  
  10. [oracle@linuxForOra general10g]$ rm -f cold_test.dbf  
  11. [oracle@linuxForOra general10g]$ sqlplus /nolog  
  12.   
  13. SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 6 15:17:40 2011  
  14.   
  15. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  16.   
  17. SQL> conn / as sysdba;  
  18. Connected to an idle instance.  
  19. SQL> startup;  
  20. ORACLE instance started.  
  21.   
  22. Total System Global Area  167772160 bytes  
  23. Fixed Size                  1218316 bytes  
  24. Variable Size              71305460 bytes  
  25. Database Buffers           92274688 bytes  
  26. Redo Buffers                2973696 bytes  
  27. Database mounted.  
  28. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file  
  29. ORA-01110: data file 6: '/u01/oracle/oradata/general10g/cold_test.dbf'  
  30.   
  31.   
  32. SQL>  
ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
解决方法:
  1. SQL> alter database datafile 6 offline;  
  2.   
  3. Database altered.  
  4.   
  5. SQL> select open_mode from v$database;  
  6.   
  7. OPEN_MODE  
  8. ----------  
  9. MOUNTED  
  10.   
  11. SQL> alter database open;  
  12.   
  13. Database altered.  
  14.   
  15. SQL> alter database create datafile '/u01/oracle/oradata/general10g/cold_test.dbf';  
  16.   
  17. Database altered.  
  18.   
  19. SQL> select status from v$datafile;  
  20.   
  21. STATUS  
  22. -------  
  23. SYSTEM  
  24. ONLINE  
  25. ONLINE  
  26. ONLINE  
  27. ONLINE  
  28. OFFLINE  
  29.   
  30. 6 rows selected.  
  31.   
  32. SQL> alter database datafile 6 online;  
  33. alter database datafile 6 online  
  34. *  
  35. ERROR at line 1:  
  36. ORA-01113: file 6 needs media recovery  
  37. ORA-01110: data file 6: '/u01/oracle/oradata/general10g/cold_test.dbf'  
  38.   
  39.   
  40. SQL> recover datafile 6;  
  41. Media recovery complete.  
  42. SQL> alter database datafile 6 online;  
  43.   
  44. Database altered.  
  45.   
  46. SQL>  
(2)、系统表空间丢失
  1. [oracle@linuxForOra general10g]$ rm -f system01.dbf  
  2. [oracle@linuxForOra general10g]$ ls  
  3. control01.ctl  control04.ctl  redo02.log    temp01.dbf  
  4. control02.ctl  example01.dbf  redo03.log    undotbs01.dbf  
  5. control03.ctl  redo01.log     sysaux01.dbf  users01.dbf  
  6. [oracle@linuxForOra general10g]$ ls -l  
  7. total 891476  
  8. -rw-r-----  1 oracle oinstall   7094272 Sep  6 15:52 control01.ctl  
  9. -rw-r-----  1 oracle oinstall   7094272 Sep  6 15:52 control02.ctl  
  10. -rw-r-----  1 oracle oinstall   7094272 Sep  6 15:52 control03.ctl  
  11. -rw-r-----  1 oracle oinstall   7094272 Sep  6 15:52 control04.ctl  
  12. -rw-r-----  1 oracle oinstall 104865792 Sep  6 15:50 example01.dbf  
  13. -rw-r-----  1 oracle oinstall  52429312 Sep  6 15:50 redo01.log  
  14. -rw-r-----  1 oracle oinstall  52429312 Sep  6 15:50 redo02.log  
  15. -rw-r-----  1 oracle oinstall  52429312 Sep  6 15:50 redo03.log  
  16. -rw-r-----  1 oracle oinstall 304095232 Sep  6 15:50 sysaux01.dbf  
  17. -rw-r-----  1 oracle oinstall  22028288 Sep  6 10:53 temp01.dbf  
  18. -rw-r-----  1 oracle oinstall 272637952 Sep  6 15:50 undotbs01.dbf  
  19. -rw-r-----  1 oracle oinstall  23601152 Sep  6 15:50 users01.dbf  
  20. [oracle@linuxForOra general10g]$ sqlplus /nolog  
  21.   
  22. SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 6 15:52:24 2011  
  23.   
  24. Copyright (c) 19822005, Oracle.  All rights reserved.  
  25.   
  26. SQL> conn / as sysdba;  
  27. Connected.  
  28. SQL> show user;  
  29. USER is "SYS"  
  30. SQL> select * from dual;  
  31. select * from dual  
  32.               *  
  33. ERROR at line 1:  
  34. ORA-00604: error occurred at recursive SQL level 1  
  35. ORA-01116: error in opening database file 1  
  36. ORA-01110: data file 1'/u01/oracle/oradata/general10g/system01.dbf'  
  37. ORA-27041: unable to open file  
  38. Linux Error: 2: No such file or directory  
  39. Additional information: 3  
  40.   
  41. SQL>  
  1. SQL> alter database datafile 1 offline;  
  2. alter database datafile 1 offline  
  3. *  
  4. ERROR at line 1:  
  5. ORA-01541: system tablespace cannot be brought offline; shut down if necessary  
system系统表空间是不能offline的,所以需要强制关闭数据库(abort),并启动到mount状态
  1. [oracle@linuxForOra general10g]$ cp /u01/oracle/coldbackup/system01.dbf /u01/oracle/oradata/general10g/  
  1. SQL> shutdown abort;  
  2. ORACLE instance shut down.  
  3. SQL> startup mount;  
  4. ORACLE instance started.  
  5.   
  6. Total System Global Area  167772160 bytes  
  7. Fixed Size                  1218316 bytes  
  8. Variable Size              71305460 bytes  
  9. Database Buffers           92274688 bytes  
  10. Redo Buffers                2973696 bytes  
  11. Database mounted.  
  12. SQL> select open_mode from v$database;  
  13.   
  14. OPEN_MODE  
  15. ----------  
  16. MOUNTED  
  1. SQL> alter database open;  
  2. alter database open  
  3. *  
  4. ERROR at line 1:  
  5. ORA-01113: file 1 needs media recovery  
  6. ORA-01110: data file 1: '/u01/oracle/oradata/general10g/system01.dbf'  
  7. SQL> recover datafile 1;  
  8. Media recovery complete.  
  9. SQL> alter database open;  
  10.   
  11. Database altered.  
  12.   
  13. SQL>  
恢复完毕!
(3)、undo表空间丢失
  1. [oracle@linuxForOra general10g]$ rm -f undotbs01.dbf  
  2.   
  3. SQL> col recover for a10;  
  4. SQL> select status,recover from v$datafile_header;  
  5.   
  6. STATUS  RECOVER  
  7. ------- ----------  
  8. ONLINE  NO  
  9. ONLINE  
  10. ONLINE  NO  
  11. ONLINE  NO  
  12. ONLINE  NO  
  13.   
  14. SQL>  
  15.   
  16. SQL> col status for a10;  
  17. SQL> col name for a50;  
  18. SQL> set linesize 150;  
  19. SQL> select file#,status,name from v$datafile;  
  20.   
  21.      FILE# STATUS     NAME  
  22. ---------- ---------- --------------------------------------------------  
  23.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  24.          2 ONLINE     /u01/oracle/oradata/general10g/undotbs01.dbf  
  25.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  26.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  27.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  28.   
  29. SQL>  
  30.   
  31. SQL> alter system checkpoint;  
  32.   
  33. System altered.  
  34.   
  35. SQL> select status,recover from v$datafile_header;  
  36.   
  37. STATUS     RECOVER  
  38. ---------- ----------  
  39. ONLINE     NO  
  40. OFFLINE  
  41. ONLINE     NO  
  42. ONLINE     NO  
  43. ONLINE     NO  
  44.   
  45. SQL> select file#,status,name from v$datafile;  
  46.   
  47.      FILE# STATUS     NAME  
  48. ---------- ---------- --------------------------------------------------  
  49.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  50.          2 RECOVER    /u01/oracle/oradata/general10g/undotbs01.dbf  
  51.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  52.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  53.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  54.   
  55. SQL>  
  56.   
  57. !cp /u01/oracle/coldbackup/undotbs01.dbf /u01/oracle/oradata/general10g/  
  58.   
  59. SQL> recover datafile 2;  
  60. ORA-00279: change 4201437 generated at 09/07/2011 16:37:05 needed for thread 1  
  61. ORA-00289: suggestion :  
  62. /u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_106_%u_  
  63. .arc  
  64. ORA-00280: change 4201437 for thread 1 is in sequence #106  
  65.   
  66. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}  
  67. AUTO  
  68. ORA-00603: ORACLE server session terminated by fatal error  
  69. ERROR:  
  70. ORA-03114: not connected to ORACLE  
  71. SQL>  
  72.   
  73. SQL> conn / as sysdba;  
  74. Connected.  
  75. SQL> select status,recover from v$datafile_header;  
  76.   
  77. STATUS  REC  
  78. ------- ---  
  79. ONLINE  NO  
  80. OFFLINE NO  
  81. ONLINE  NO  
  82. ONLINE  NO  
  83. ONLINE  NO  
  84.   
  85. SQL> col status for a10;  
  86. SQL> col name for a50;  
  87. SQL> set linesize 150;  
  88. SQL> select file#,status,name from v$datafile;  
  89.   
  90.      FILE# STATUS     NAME  
  91. ---------- ---------- --------------------------------------------------  
  92.          1 SYSTEM     /u01/oracle/oradata/general10g/system01.dbf  
  93.          2 OFFLINE    /u01/oracle/oradata/general10g/undotbs01.dbf  
  94.          3 ONLINE     /u01/oracle/oradata/general10g/sysaux01.dbf  
  95.          4 ONLINE     /u01/oracle/oradata/general10g/users01.dbf  
  96.          5 ONLINE     /u01/oracle/oradata/general10g/example01.dbf  
  97. SQL>  
  98. SQL> alter database datafile 2 online;  
  99. Database altered.  
  100. SQL>  
(4)、日志文件丢失(分为两种情况)--shutdown immediate 和 shutdown abort
a、shutdown immediate
  1. [oracle@linuxForOra general10g]$ rm -f redo*  
  2. [oracle@linuxForOra general10g]$ ls  
  3. control01.ctl  control04.ctl  sysaux01.dbf  undotbs01.dbf  
  4. control02.ctl  example01.dbf  system01.dbf  users01.dbf  
  5. control03.ctl  GENERAL10G     temp01.dbf  
  6. [oracle@linuxForOra general10g]$ sqlplus /nolog  
  7.   
  8. SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 7 19:53:41 2011  
  9.   
  10. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  11.   
  12. SQL> conn / as sysdba;  
  13. Connected.  
  14. SQL> shutdown immediate;  
  15. Database closed.  
  16. Database dismounted.  
  17. ORACLE instance shut down.  
  18. SQL> startup;  
  19. ORACLE instance started.  
  20.   
  21. Total System Global Area  167772160 bytes  
  22. Fixed Size                  1218316 bytes  
  23. Variable Size              75499764 bytes  
  24. Database Buffers           88080384 bytes  
  25. Redo Buffers                2973696 bytes  
  26. Database mounted.  
  27. ORA-00313: open failed for members of log group 1 of thread 1  
  28. ORA-00312: online log 1 thread 1: '/u01/oracle/oradata/general10g/redo01.log'  
  29.   
  30. SQL>  
  31.   
  32.   
  33. SQL> select group#,archived,status from v$log;  
  34.   
  35.     GROUP# ARC STATUS  
  36. ---------- --- ----------------  
  37.          1 NO  CURRENT  
  38.          3 YES UNUSED  
  39.          2 YES UNUSED  
  40.   
  41. SQL> alter database clear logfile group 3;  
  42.   
  43. Database altered.  
  44.   
  45. SQL> alter database clear logfile group 2;  
  46.   
  47. Database altered.  
  48.   
  49. SQL>  
  50.   
  51. SQL> recover database until cancel;  
  52. Media recovery complete.  
  53. SQL> alter database open resetlogs;  
  54.   
  55. Database altered.  
完成恢复!
b、shutdown abort
  1. [oracle@linuxForOra coldbackup]$ sqlplus /nolog  
  2.   
  3. SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 7 20:39:55 2011  
  4.   
  5. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  6.   
  7. SQL> conn / as sysdba;  
  8. Connected.  
  9. SQL> shutdown abort;  
  10. ORACLE instance shut down.  
  11. SQL> !rm -f /u01/oracle/oradata/general10g/redo*  
  12.   
  13. SQL> startup;  
  14. ORACLE instance started.  
  15.   
  16. Total System Global Area  167772160 bytes  
  17. Fixed Size                  1218316 bytes  
  18. Variable Size              75499764 bytes  
  19. Database Buffers           88080384 bytes  
  20. Redo Buffers                2973696 bytes  
  21. Database mounted.  
  22. ORA-00313: open failed for members of log group 1 of thread 1  
  23. ORA-00312: online log 1 thread 1: '/u01/oracle/oradata/general10g/redo01.log'  
  24. ORA-27037: unable to obtain file status  
  25. Linux Error: 2: No such file or directory  
  26. Additional information: 3  
  27. SQL>  
  28.   
  29. SQL> select group#,archived,status from v$log;  
  30.   
  31.     GROUP# ARC STATUS  
  32. ---------- --- ----------------  
  33.          1 NO  CURRENT  
  34.          3 YES UNUSED  
  35.          2 YES INACTIVE  
  36.   
  37. SQL> recover database until cancel;  
  38. ORA-00279: change 4202761 generated at 09/07/2011 20:29:53 needed for thread 1  
  39. ORA-00289: suggestion :  
  40. /u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.a  
  41. rc  
  42. ORA-00280: change 4202761 for thread 1 is in sequence #2  
  43.   
  44. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}  
  45. auto  
  46. ORA-00308: cannot open archived log  
  47. '/u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.  
  48. arc'  
  49. ORA-27037: unable to obtain file status  
  50. Linux Error: 2: No such file or directory  
  51. Additional information: 3  
  52.   
  53. ORA-00308: cannot open archived log  
  54. '/u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.  
  55. arc'  
  56. ORA-27037: unable to obtain file status  
  57. Linux Error: 2: No such file or directory  
  58. Additional information: 3  
  59.   
  60. ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below  
  61. ORA-01194: file 1 needs more recovery to be consistent  
  62. ORA-01110: data file 1: '/u01/oracle/oradata/general10g/system01.dbf'  
  63.   
  64. SQL> recover database until cancel;  
  65. ORA-00279: change 4202761 generated at 09/07/2011 20:29:53 needed for thread 1  
  66. ORA-00289: suggestion :  
  67. /u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.a  
  68. rc  
  69. ORA-00280: change 4202761 for thread 1 is in sequence #2  
  70.   
  71. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}  
  72. auto  
  73. ORA-00308: cannot open archived log  
  74. '/u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.  
  75. arc'  
  76. ORA-27037: unable to obtain file status  
  77. Linux Error: 2: No such file or directory  
  78. Additional information: 3  
  79.   
  80. ORA-00308: cannot open archived log  
  81. '/u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.  
  82. arc'  
  83. ORA-27037: unable to obtain file status  
  84. Linux Error: 2: No such file or directory  
  85. Additional information: 3  
  86.   
  87. ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below  
  88. ORA-01194: file 1 needs more recovery to be consistent  
  89. ORA-01110: data file 1: '/u01/oracle/oradata/general10g/system01.dbf'  
  90.   
  91. SQL>  
  92. SQL> recover database until cancel;  
  93. ORA-00279: change 4202761 generated at 09/07/2011 20:29:53 needed for thread 1  
  94. ORA-00289: suggestion :  
  95. /u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_07/o1_mf_1_2_%u_.a  
  96. rc  
  97. ORA-00280: change 4202761 for thread 1 is in sequence #2  
  98.   
  99. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}  
  100. /u01/oracle/coldbackup/redo01.log  
  101. Log applied.  
  102. Media recovery complete.  
  103. SQL>  
恢复完成!
(5)、控制文件丢失
  1. [oracle@linuxForOra general10g]$ rm -f control*  
  2. [oracle@linuxForOra general10g]$ sqlplus /nolog  
  3.   
  4. SQL*Plus: Release 10.2.0.1.0 - Production on Thu Sep 8 17:07:14 2011  
  5.   
  6. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  7.   
  8. SQL> conn / as sysdba;  
  9. Connected.  
  10. SQL> shutdown immediate;  
  11. ORA-00210: cannot open the specified control file  
  12. ORA-00202: control file: '/u01/oracle/oradata/general10g/control01.ctl'  
  13. ORA-27041: unable to open file  
  14. Linux Error: 2: No such file or directory  
  15. Additional information: 3  
  16. SQL> shutdown abort;  
  17. ORACLE instance shut down.  
  18. SQL> startup nomount;  
  19. ORACLE instance started.  
  20.   
  21. Total System Global Area  167772160 bytes  
  22. Fixed Size                  1218316 bytes  
  23. Variable Size              75499764 bytes  
  24. Database Buffers           88080384 bytes  
  25. Redo Buffers                2973696 bytes  
  26. SQL> !cp /u01/oracle/coldbackup/control* /u01/oracle/oradata/general10g  
  27.   
  28. SQL> alter database mount;  
  29.   
  30. Database altered.  
  31.   
  32. SQL> alter database open resetlogs;  
  33. alter database open resetlogs  
  34. *  
  35. ERROR at line 1:  
  36. ORA-01139: RESETLOGS option only valid after an incomplete database recovery  
  37.   
  38.   
  39. SQL> recover database using backup controlfile;  
  40. ORA-00279: change 4268109 generated at 09/08/2011 15:52:56 needed for thread 1  
  41. ORA-00289: suggestion :  
  42. /u01/oracle/flash_recovery_area/GENERAL10G/archivelog/2011_09_08/o1_mf_1_2_%u_.a  
  43. rc  
  44. ORA-00280: change 4268109 for thread 1 is in sequence #2  
  45.   
  46. Specify log: {<RET>=suggested | filename | AUTO | CANCEL}  
  47. /u01/oracle/oradata/general10g/control01.ctl  
  48. ORA-00317: file type 0 in header is not log file  
  49. ORA-00334: archived log: '/u01/oracle/oradata/general10g/control01.ctl'  
  50.   
  51. SQL> alter database open resetlogs;  
  52. alter database open resetlogs  
  53. *  
  54. ERROR at line 1:  
  55. ORA-01092: ORACLE instance terminated. Disconnection forced  
  56.   
  57. SQL> conn / as sysdba;  
  58. Connected to an idle instance.  
  59. SQL> startup;  
  60. ORACLE instance started.  
  61.   
  62. Total System Global Area  167772160 bytes  
  63. Fixed Size                  1218316 bytes  
  64. Variable Size              75499764 bytes  
  65. Database Buffers           88080384 bytes  
  66. Redo Buffers                2973696 bytes  
  67. Database mounted.  
  68. Database opened.  
  69. SQL>  
恢复完成!

你可能感兴趣的:(oracle)