ARCHIVELOG模式下用户管理的不完全恢复—基于取消的不完全恢复

 基于取消的恢复只要适用于以下情况: 归档日志丢失导致完全恢复失败; 丢失了数据文件和未归档的重做日志(联机重做日志);

先关闭数据库,执行一次全库冷备份。

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> shutdown immediate  
  4. 数据库已经关闭。  
  5. 已经卸载数据库。  
  6. ORACLE 例程已经关闭。  
  7. SQL> ! cp /u01/app/oracle/oradata/orcl/* /u01/app/oracle/backup/  
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> ! cp /u01/app/oracle/oradata/orcl/* /u01/app/oracle/backup/


然后打开数据库继续使用,可以看见在备份的时候数据库用户u1的t表里面就有一条记录。接着在向t表里插入数据,多切换几次日志,模拟数据库使用了很久的样子,让redo log归档。

  1. SQL> startup  
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area  167772160 bytes  
  5. Fixed Size                  1266392 bytes  
  6. Variable Size              62917928 bytes  
  7. Database Buffers          100663296 bytes  
  8. Redo Buffers                2924544 bytes  
  9. 数据库装载完毕。  
  10. 数据库已经打开。  
  11. SQL> conn u1/u1  
  12. 已连接。  
  13. SQL> select * from t;  
  14.   
  15.         ID VALUE  
  16. ---------- ----------  
  17.          1 a  
  18.   
  19. SQL> insert into t values(2,'b');  
  20.   
  21. 已创建 1 行。  
  22.   
  23. SQL> commit;  
  24.   
  25. 提交完成。  
  26.   
  27. SQL> select * from t;  
  28.   
  29.         ID VALUE  
  30. ---------- ----------  
  31.          1 a  
  32.          2 b  
  33.   
  34. SQL> conn /as sysdba  
  35. 已连接。  
  36. SQL> alter system switch logfile;  
  37.   
  38. 系统已更改。  
  39.   
  40. SQL> /  
  41.   
  42. 系统已更改。  
  43.   
  44. SQL> /  
  45.   
  46. 系统已更改。  
  47.   
  48. SQL> /  
  49.   
  50. 系统已更改。  
  51.   
  52. SQL> /  
  53.   
  54. 系统已更改。  
  55.   
  56. SQL> /  
  57.   
  58. 系统已更改。  
  59.   
  60. SQL> /  
  61.   
  62. 系统已更改。  
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1266392 bytes
Variable Size              62917928 bytes
Database Buffers          100663296 bytes
Redo Buffers                2924544 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn u1/u1
已连接。
SQL> select * from t;

        ID VALUE
---------- ----------
         1 a

SQL> insert into t values(2,'b');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t;

        ID VALUE
---------- ----------
         1 a
         2 b

SQL> conn /as sysdba
已连接。
SQL> alter system switch logfile;

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。

SQL> /

系统已更改。


现在模拟数据库还没来得及再一次备份,数据文件都丢失了。归档日志也丢失了,所以数据库只能不完全恢复。

  1. SQL> conn /as sysdba  
  2. 已连接。  
  3. SQL> shutdown immediate  
  4. 数据库已经关闭。  
  5. 已经卸载数据库。  
  6. ORACLE 例程已经关闭。  
  7. SQL> ! rm -rf /u01/app/oracle/oradata/orcl/*.dbf  
  8.   
  9. SQL> ! cp /u01/app/oracle/backup/*.dbf /u01/app/oracle/oradata/orcl/  
SQL> conn /as sysdba
已连接。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> ! rm -rf /u01/app/oracle/oradata/orcl/*.dbf

SQL> ! cp /u01/app/oracle/backup/*.dbf /u01/app/oracle/oradata/orcl/


基于取消的不完全恢复

  1. SQL> startup  
  2. ORACLE 例程已经启动。  
  3.   
  4. Total System Global Area  167772160 bytes  
  5. Fixed Size                  1266392 bytes  
  6. Variable Size              62917928 bytes  
  7. Database Buffers          100663296 bytes  
  8. Redo Buffers                2924544 bytes  
  9. 数据库装载完毕。  
  10. ORA-01113: 文件 1 需要介质恢复  
  11. ORA-01110: 数据文件 1: '/u01/app/oracle/oradata/orcl/system01.dbf'  
  12.   
  13. SQL> select * from v$recover_file;  
  14.   
  15.      FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME  
  16. ---------- ------- ------- ----------------------------------------------------------------- ---------- --------------  
  17.          1 ONLINE  ONLINE                                                                        500797 09-10月-11  
  18.          2 ONLINE  ONLINE                                                                        500797 09-10月-11  
  19.          3 ONLINE  ONLINE                                                                        500797 09-10月-11  
  20.          4 ONLINE  ONLINE                                                                        500797 09-10月-11  
  21.          5 ONLINE  ONLINE                                                                        500797 09-10月-11  
  22.          6 ONLINE  ONLINE                                                                        500797 09-10月-11  
  23.   
  24. 已选择6行。  
  25. SQL> recover database until cancel;  
  26. ORA-00279: 更改 500797 (在 10/09/2011 06:24:47 生成) 对于线程 1 是必需的  
  27. ORA-00289: 建议: /u01/app/oracle/flash_recovery_area/ORCL/archivelog/2011_10_09/o1_mf_1_2_%u_.arc  
  28. ORA-00280: 更改 500797 (用于线程 1) 在序列 #2 中  
  29.   
  30.   
  31. 指定日志: {<RET>=suggested | filename | AUTO | CANCEL}  
  32. cancel  
  33. 介质恢复已取消。  
  34. SQL> select * from v$recover_file;  
  35.   
  36.      FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME  
  37. ---------- ------- ------- ----------------------------------------------------------------- ---------- --------------  
  38.          1 ONLINE  ONLINE                                                                        500797 09-10月-11  
  39.          2 ONLINE  ONLINE                                                                        500797 09-10月-11  
  40.          3 ONLINE  ONLINE                                                                        500797 09-10月-11  
  41.          4 ONLINE  ONLINE                                                                        500797 09-10月-11  
  42.          5 ONLINE  ONLINE                                                                        500797 09-10月-11  
  43.          6 ONLINE  ONLINE                                                                        500797 09-10月-11  
  44.   
  45. 已选择6行。  
  46. SQL> alter database open;  
  47. alter database open  
  48. *  
  49. 第 1 行出现错误:  
  50. ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项  
  51.   
  52. SQL> alter database open resetlogs;  
  53.   
  54. 数据库已更改。  
  55.   
  56. SQL> select status from v$instance;  
  57.   
  58. STATUS  
  59. ------------  
  60. OPEN  
  61.   
  62. SQL> conn u1/u1;  
  63. 已连接。  
  64. SQL> select * from t;  
  65.   
  66.         ID VALUE  
  67. ---------- ----------  
  68.          1 a  

猜你喜欢

转载自blog.csdn.net/lufei051/article/details/40681407