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

标签: oracle 备份 分析 | 发表时间:2015-06-24 21:18 | 作者:baobaojinjin
出处:http://www.iteye.com

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) 1982, 2005, 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>  
恢复完成!


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [oracle 备份 分析] 推荐:

Oracle备份方式之差异性分析

- - Oracle - 数据库 - ITeye博客
  由于Oracle数据库备份有三种方式(分别是导出/导入(EXP/IMP)、热备份和冷备份. 导出备件是一种逻辑备份,冷备份和热备份是物理备份),每种方式具有不同的恢复特性,因此应集成数据库与文件系统备份,集成逻辑备份和物理备份.   在操作系统级,使用大容量磁盘阵列,通过磁盘映像技术使每一个数据库文件自动分布于每个物理磁盘.

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

- - 数据库 - ITeye博客
上述的基本情况就是:关闭数据库的状态下,利用linux拷贝命令,将数据文件、控制文件、重做日志文件备份到相应的位置. 2、为了更方便的进行冷备份,将冷备份的操作写成批处理脚本. 注意:脚本改成可执行权限. 3、模拟相关文件丢失或者损坏情况下,利用冷备份进行恢复. (1)、非系统表空间数据文件丢失情况.

Oracle备份恢复概要

- - CSDN博客数据库推荐文章
   (5)RAID和镜像驱动器.    (1)收集备份与恢复策略需求.    (2)精心设计备份与恢复计划.  1、ORACLE各种备份.      ①联机备份(热)和脱机备份(冷).      ②不一致性备份和一致性备份.      ①完全备份:归档模式、非模式模式.      ⑤归档日志文件备份.

Oracle数据库备份

- - Oracle - 数据库 - ITeye博客
(一)、导出/导入(EXPORT/IMPORT).   EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库.   1、EXPORT将数据库中数据备份成一个二进制系统文件称为“导出转储文件”(EXPORT. DUMP FILE),并将重新生成数据库写入文件中.   a.用户模式:导出用户所有对象以及对象中的数据;.

oracle定时备份-增量备份

- - 数据库 - ITeye博客
在进行数据库维护的过程中经常会遇到数据库备份的问题. 先介绍一种常用的数据备份操作. 系统执行计划+批处理命令;. 在win的系统中存在 任务计划程序 选项;新建任务选中你写好的程序,设定好时间,就可以按照设定的时间执行程序了. 在备份oracle时写一个导入命令,例如. 把它考到文件中,扩展名改为.bat.

oracle rman自动备份脚本

- - CSDN博客推荐文章
作者:magerguo 发表于2012-9-9 10:30:33 原文链接. 阅读:0 评论:0 查看评论.

Oracle数据库备份方法[转]

- - Oracle - 数据库 - ITeye博客
转载地址: http://www.cnblogs.com/elegantok/archive/2009/03/31/1426290.html. Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统. 比如使用export实用程序导出数据库对象、使用Oracle备份数据库、使用Oracle对称复制、使用Oracle并行服务器、使用Oracle冷备份、使用Oracle热备份等各种备份方法都有其优缺点、适用的场合和相应的软硬件要求.

Padding Oracle Attack实例分析

- Lianhui Wang - 老赵点滴 - 追求编程之美
在之前的《浅谈》一文中,我提到《Automated Padding Oracle Attacks with PadBuster》一文对理解Padding Oracle Attack非常有帮助,并打算将其翻译出来. 《Automated》一文其实是在介绍PadBuster这个自动攻击工具,不过其中也通过实例加配图详细介绍了Padding Oracle Attack的原理——这也是我会翻译的部分.

Oracle数据库分析函数详解

- - MySQLOPS 数据库与运维自动化技术分享
Oracle数据库分析函数详解. 原创文章,转载请注明: 文章地址 Oracle数据库分析函数详解.

oracle 打开trace,并分析trace

- - CSDN博客数据库推荐文章
2、跟踪session事件. 作者:huzia 发表于2014-4-22 17:33:55 原文链接. 阅读:71 评论:0 查看评论.