Heim >Datenbank >MySQL-Tutorial >Oracle 备份恢复概要介绍

Oracle 备份恢复概要介绍

WBOY
WBOYOriginal
2016-06-07 17:28:42833Durchsuche

备份恢复是oracle的一门重要技术,当然大家最好都不需要用到这门技术,就像大家最好都不需要去医院。 在打开数据库的时候,oracl

备份恢复是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 

 

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这些技术将在接下的继续。 见  

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn