首页 > 代码库 > Oracle数据库中闪回恢复的详细分析

Oracle数据库中闪回恢复的详细分析

Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的。这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了。oracle10g大大的增强了闪回查询的功能,并且提供了将整个数据库回退到过去某个时刻的能力,这是通过引入一种新的flashback log实现的。

flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log则将Oracle数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复区(Flashback recovery area)的新特性,可以将所有恢复相关的文件,比如flashback log,archive log,backup set等,放到这个区域集中管理。

 

1.设置闪回恢复区

闪回恢复区主要通过3个初始化参数来设置和管理

 

db_recovery_file_dest:指定闪回恢复区的位置

 

db_recovery_file_dest_size:指定闪回恢复区的可用空间大小

 

db_flashback_retention_target:指定Oracle数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的 flash log。所以这个参数要和db_recovery_file_dest_size配合修改。

 

2.启动flashback database

设置了闪回恢复区后,可以启动闪回数据库功能。

 

首先,数据库必须已经处于归档模式

那么如何设置归档呢?很简单的步骤

1.关闭数据库

 

 

  1. SQL> shutdown immediate;  

 

2.启动Oracle数据库为mount模式

 

 

  1. SQL> startup mount  

 

3.显示和修改归档模式

 

 

  1. SQL> archive log list  
  2. SQL> alter database archivelog;  
  3. SQL> alter database open  

 

 

4.设置归档日志的格式

 

 

  1. SQL>alter system set log_archive_format=‘ARC%s%t%r.log‘ scope=spfile;  

 

5.设置归档日志的存放路径

 

 

  1. SQL>alter system set log_archive_dest=‘+data/arcl‘ scope=spfile;  
  2. SQL>shutdown immediate  
  3. SQL>startup  

 

 

6.强制切换归档日至

 

 

  1. SQL>alter system switch logfile;  

 

7.取消归档

 

 

  1. SQL>alter database noarchivelog;  

 

 

参数

 

1.格式参数

 

%s 日志序列号

 

%S 日志序列号(带前导的0)

 

%t 重做线程编号

 

%a 活动的ID号

 

%dOracle 数据库ID号

 

%r RESELOGS的iD值

 

 

  1. SQL> archive log list;   
  2. Database log mode Archive Mode  
  3. Automatic archival Enabled  
  4. Archive destination USE_DB_RECOVERY_FILE_DEST  
  5. Oldest online log sequence 156  
  6. Next log sequence to archive 158  
  7. Current log sequence 158 

 

 

然后,启动Oracle数据库到mount状态

 

  1. SQL> shutdown immediate;   
  2. Database closed.  
  3. Database dismounted.  
  4. ORACLE instance shut down.  
  5. SQL> startup mount   
  6. ORACLE instance started.  
  7. Total System Global Area 285212672 bytes  
  8. Fixed Size 1218992 bytes  
  9. Variable Size 75499088 bytes  
  10. Database Buffers 205520896 bytes  
  11. Redo Buffers 2973696 bytes  
  12. Database mounted.  
  13. SQL>alter database flashback on;