ITPub博客

首页 > 数据库 > Oracle > oracle 闪回

oracle 闪回

原创 Oracle 作者:hurp_oracle 时间:2014-08-10 13:13:20 0 删除 编辑
闪回概述:
闪回数据库就是当出现逻辑错误时,能够将整个数据库回退到出错前的那个时间点上。实现闪回数据库的基础就是闪回日志。只要我们配置了闪回数据库,就会自动创建闪回日志。这时只要数据库里的数据发生了变化,Oracle就会将数据被修改前的旧值保存在闪回日志里。当我们需要闪回数据库时,ORACLE就会读取闪回日志里的记录,并应用到数据库上,从而将数据库回退到历史上的某个时间点的状态上。
闪回日志与联机重做日志一样,都是循环使用的,但它们还是有不少的差异,当事务修改了buffer_cache里的数据时,会将改变前的值和改变后的值都以重做记录的形式保存在log_buffer中,然后通过LGWR进程将这些重做记录写入到联机日志文件中。但是在记录闪回日志时,只会将改变前的值保存在flash buffer中,再由RVWR进程写入到闪回日志文件中。

闪回分为如下几种:
a)闪回数据库
b)闪回删除
c)闪回表
d)闪回版本查询(flashback version query)
e)闪回事物查询(flashback transaction query)
f)闪回查询(flashback query)
注:上述六种闪回,只有闪回数据库和Flash Recovery  Area有关系,闪回数据库的闪回日志(Flashback log)只能放在闪回恢复区中。而其它的闪回功能,都和闪回恢复区没有任何联系。也就是说,使用闪回数据库功能时必须使用闪回恢复区,而10G的其它闪回功能中,闪回恢复区不是必须的。

闪回数据库:

启用闪回数据库,必须按如下四个步聚进行;
1.将数据库开启为归档模式
  1. sql> archive log list;   #查看是不是归档方式  
  2. sql> alter system set log_archive_start=true scope=spfile; #启用主动归档  
  3. sql> alter system set log_archive_dest=''location=/oracle/ora9/oradata/arch'' scope=spfile;#设置归档路径  
  4. #如果归档到两个位置,则可以通过上边方法实现  
  5. sql> alter system set log_archive_format=''arch_%d_%t_%r_%s.log''  #设置归档日记款式  
  6. sql> shutdown immediate;  
  7. sql> startup mount;    #打开控制文件,不打开数据文件  
  8. sql> alter database archivelog; #将数据库切换为归档模式  
  9. sql> alter database open;   #将数据文件打开  
  10. sql> archive log list;   #查看此时是否处于归档模式  
  11. 查询以确定数据库位于archivelog模式中且归档过程正在运行  
  12. sql> select log_mode from v$database;  
  13. sql> select archiver from v$instance;  

2.配置闪回恢复区
  1. sql> alter system set db_recovery_file_dest='/arch01/flash_recovery_area' scope=both;
  2. sql> alter system set db_recovery_file_dest_size='10g' scope=both sid='oyy3a';

3.配置闪回保留时间 
  1. sql> alter system set db_flashback_retention_target=2880 scope=spfile;   ----该参数以分钟为单位,默认为1440分钟,也就是24小时。

4.启用闪回数据库
  1. sql> startup mount;
  2. sql>alter databaase flashback on;

5.关闭闪回数据库
注:一旦关闭闪回数据库,则闪回恢复区的闪回日志都被自动删除
  1. sql> startup mount;
  2. sql>alter databaase flashback off;  
6.闪回数据库
在配置完闪回数据库以后,如果确实需要进行闪回数据库操作的话,可以通过RMAN进行,也可以通过SQL*PLUS进行。
  1. sql> shutdown immediate;
  2. sql> startup mount exclusive;
  3. sql> flashback database to timestamp to_date('2005-10-01 15:32:00','yyyy-mm-dd hh24:mi:ss');
  4. sql> alter database open read only;  ----先以只读模式打开,来确认闪回的数据是否正常,如查数据正确,则需要关闭数据库,并以resetlogs方式打开。
  5. sql> alter database open resetlogs;



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29446986/viewspace-1248695/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ORA-16019
请登录后发表评论 登录
全部评论

注册时间:2014-01-17

  • 博文量
    152
  • 访问量
    647372