Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 备份恢复概要介绍

备份恢复是Oracle的一门重要技术,当然大家最好都不需要用到这门技术,就像大家最好都不需要去医院。在打开数据库的时候,oracle会对控制文件和数据文件头的检查点进行比对:
 
1.检查数据文件头的checkpoint cnt与控制文件中的checkpoint cnt是否一致,如果一致,那么进行第二次检查
 
2.检查数据文件头开始的SCN和控制文件中结束的SCN进行比较,如果一致,那么不需要进行恢复,但是如果不一致,比如突然断电,控制文件还没有
 
 来得及记录数据文件的结束的SCN,所以这里的第二步就无法通过。
 
当然一切备份其实都是为了更快的恢复,所以在制定备份策略,就要兼顾到很多方面
 
下备份的分类:
 
类型分类:
 
逻辑备份和物理备份
 
数据库状态:
 
热备和冷备
 
备份的状态:
 
一致性备份和非一致性备份
 
备份规模:
 
完全备份(归档和非归档),表空间备份,数据文件备份,控制文件备份,归档日志文件备份
  恢复的分类:
 
实例恢复,介质恢复
 
恢复方式:
 
完全恢复和不完全恢复
  常见的备份恢复技术:
 
1.用户管理备份和恢复
 
2.RMAN备份和恢复
 
3.闪回
 
4.逻辑导入导出,exp/imp expdp/empdp
 
5.data guard,当然DG是容灾用的,说到底其实还是备份
  今天把最简单的一种技术介绍一下,算开个头
 
闪回查询:
 
这个特性其实要归功与UNDO,闪回查询其实就是查询的UNDO操作过的数据,所以如果操作过的数据如果不在UNDO里了,那么肯定无法闪回查询。
 
举例:比如一个update的操作,操作后,会在UNDO里构造update之前要操作的数据,所以立即使用闪回查询可以查到,当然如果你的update是误操作,就可以闪回
 
但是如果UNDO已经覆盖了操作的数据,那么无法闪回。大家都知道UNDO是根据一定的参数,有一个UNDO数据的保留时间,过了这个时间当然会被覆盖掉。
 
闪回查询支持的类型:
 
1.基于SCN的闪回查询(as of scn)
 
2.基于时间的闪回查询(as of timestamp)
 
基于SCN的闪回查询实例:
 
SQL> create table flash_table_scn as select * from dba_objects where rownum<=1000;
  Table created.
  SQL> select count(*) from flash_table_scn;
                                            COUNT(*)
 
--------------------------------------------------
 
                                              1000
  SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
                            GET_SYSTEM_CHANGE_NUMBER
 
--------------------------------------------------
 
                                      122693324625
  SQL> delete from flash_table_scn;
  1000 rows deleted.
  SQL> commit;
  Commit complete.
  SQL> select count(*) from  flash_table_scn as of scn 122693324625;
                                            COUNT(*)
 
--------------------------------------------------
 
                                              1000
 
as of timestamp还是转换为as of scn的
 SQL> select timestamp_to_scn(sysdate) from dual;
                         TIMESTAMP_TO_SCN(SYSDATE)
 
--------------------------------------------------
 
                                      122693325694
  
SQL> select to_char(scn_to_timestamp(122693325694),"yyyy-mm-dd hh24:mi:ss") from dual;
  TO_CHAR(SCN_TO_TIMESTAMP(12269
 
---------------------------------------------------------------------------
 
2013-04-15 17:21:56
  能转换是因为SMON_SCN_TIME此表,这里记录了时间和SCN的对应数据,所以如果这张表没有对应的,那么是无法转换的。
 
闪回技术用起来很方便,这里还可以闪回database,table这些技术将在接下的继续。 见  http://www.linuxidc.com/Linux/2013-05/84129.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Oracle找出表中某几个字段数据相同的记录Oracle Flashback database相关资讯      Oracle备份  Oracle恢复 
  • 利用Oracle自带的impdp和expdp进行  (05月18日)
  • Oracle基于cancel的不完全恢复  (10/08/2014 19:32:05)
  • Oracle 10.2.0.5 版本之后 asm   (08/08/2014 11:02:09)
  • Oracle数据表被drop后的恢复  (10/15/2014 10:43:07)
  • Java实现Oracle数据库备份  (08/12/2014 11:24:51)
  • Oracle备份与恢复系列  (08/01/2014 09:15:02)
本文评论 查看全部评论 (0)
表情: 姓名: 字数