加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flashback restore point是否能还原坏块

发布时间:2020-12-15 07:10:47 所属栏目:百科 来源:网络整理
导读:? ??? 上周5的时候跟同事他们一起讨论DG环境的数据库的升级方式,原主库使用shutdown abort后,由broker自动切换备库,由备库变成主库,在做升级,升级前做一次restore point。随后就说到了,shutdown abort可能会导致出现一次坏块的情况(概率是很少),备

?

??? 上周5的时候跟同事他们一起讨论DG环境的数据库的升级方式,原主库使用shutdown abort后,由broker自动切换备库,由备库变成主库,在做升级,升级前做一次restore point。随后就说到了,shutdown abort可能会导致出现一次坏块的情况(概率是很少),备库同时升级失败,导致shutdown abort的数据库不能通过flashback到restore point,但是这次出现了分歧。
?
??? 下次就是用bbed这个来模拟一下。测试环境是11gr2,在11gr2中安装bbed这个工具比10要复杂一些。安装步骤见:
ORACLE 编译/安装bbed工具 http://www.voidcn.com/article/p-tzyxajrb-cz.html

??? 下面开始测试:

1.启动flashback

 
 
  1. SQL>?select?open_mode,log_mode,flashback_on?from?V$database;?
  2. ?
  3. OPEN_MODE????????????LOG_MODE?????FLASHBACK_ON?
  4. --------------------?------------?------------------?
  5. READ?WRITE???????????ARCHIVELOG???NO?
  6. #注意restore point可以不用开启flashback,也可以开启flashback .
  7. #normal restore point要开启flashback.
  8. #guaranteed restore point不用开启flashback
  9. SQL>?alter?database?flashback?on;?
  10. ?
  11. Database?altered.?
  12. ?
  13. SQL>??select?open_mode,flashback_on?from?V$database;?
  14. ?
  15. OPEN_MODE????????????LOG_MODE?????FLASHBACK_ON?
  16. --------------------?------------?------------------?
  17. READ?WRITE???????????ARCHIVELOG???YES?

2,建测试数据表空间与数据

 
 
  1. SQL>?create?tablespace?test?datafile?'/u01/app/oracle/oradata/luo/test.dbf'?size?20M?autoextend?off;?
  2. ?
  3. Tablespace?created.?
  4. ?
  5. SQL>?alter?user?scott?identified?by?oracle?account?unlock?default?tablespace?test;?
  6. ?
  7. User?altered.?
  8. ?
  9. SQL>?create?table?scott.test?as?select?*?from?dba_objects;?
  10. ?
  11. Table?created.?
  12. ?
  13. SQL>??

3,创建restore point

 
 
  1. SQL>?create?restore?point?bbed_test?guarantee?flashback?database;?
  2. Restore?point?created.?
  3. SQL>?col?name?for?a20?
  4. SQL>?set?lines?175?
  5. SQL>??select?scn,to_char(time,'YYYY-MM-DD?HH24:MI:SS')?ctime,name?from?v$restore_point;?
  6. ?
  7. ???????SCN?CTIME???????????????NAME?
  8. ----------?-------------------?--------------------?
  9. ???1037086?2012-09-08?04:46:39?BBED_TEST?

4,通过bbed工具损坏一个block。

5,查询内容报坏块错误。

 
 
  1. SQL>?select?owner,object_name?from?test?where?object_name='TEST';?
  2. select?owner,object_name?from?test?where?object_name='TEST'?
  3. ??????????????????????????????*?
  4. ERROR?at?line?1:?
  5. ORA-01578:?ORACLE?data?block?corrupted?(file?#?5,?block?#?1183)?
  6. ORA-01110:?data?file?5:?'/u01/app/oracle/oradata/luo/test.dbf'?

6,flashback数据库bbed_test

 
 
  1. SQL>?shutdown?abort;?
  2. ORACLE?instance?shut?down.?
  3. SQL>?startup?mount;?
  4. ORACLE?instance?started.?
  5. ?
  6. Total?System?Global?Area??313159680?bytes?
  7. Fixed?Size??????????????????2226072?bytes?
  8. Variable?Size?????????????243271784?bytes?
  9. Database?Buffers???????????62914560?bytes?
  10. Redo?Buffers????????????????4747264?bytes?
  11. Database?mounted.?
  12. #这个显示了flashback成功?
  13. SQL>?flashback?database?to?restore?point?bbed_test;?
  14. ?
  15. Flashback?complete.?
  16. ?
  17. SQL>?alter?database?open;?
  18. alter?database?open?
  19. *?
  20. ERROR?at?line?1:?
  21. ORA-01589:?must?use?RESETLOGS?or?NORESETLOGS?option?for?database?open?
  22. ?
  23. ?
  24. SQL>?alter?database?open?resetlogs;?
  25. ?
  26. Database?altered.?

7,查询指定数据。

 
 
  1. SQL>?conn?scott/oracle?
  2. Connected.?
  3. SQL>?select?owner,?block?#?1183)?
  4. ORA-01110:?data?file?5:?'/u01/app/oracle/oradata/luo/test.dbf'?

??? 这里还是报块的错误。

??? 想想为什么不能成功。因为数据库的restore point,只能flash数据库自己修改的块,而像shutdown abort这样强制关闭ORACLE时,并不会记录flash log日志的,所以就会出现上面的情况。但是如果坏的块出现在system表空间,那样恢复起来可能就会很惨了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读