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  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值