一、闪回数据库体系结构图
启用闪回数据库的开销取决于数据库的读/写混合工作量。因为查询不需要记录任何闪回数据,所以工作量的写操作量越大,启动闪回数据库的开销就越高
二、配置闪回数据库
1、配置闪回恢复区和归档模式
启动快速恢复区需要先设置db_recovery_file_dest_size(快速恢复区大小)再设置db_recovery_file_dest
(快速恢复区位置)。要禁用快速恢复区设置db_recovery_file_dest_size为空即可。
alter system archivelog|noarchivelog;--在mount状态下
2、使用DB_FLASHBACK_RETENTION_TARGET初始化参数设置保留目标
可指定一个上线(以分钟为单位),指定数据库能够闪回到多长时间之前。此参数是一个目标,并不提供任何保证。闪回时间间隔取决于快速恢复区中保存的
闪回数据量。3、使用以下命令启动闪回数据库
alter database flashback on;
必须先针对归档配置数据库,之后才能发出命令来启动闪回数据库。
可使用以下查询来确定是否已启用闪回数据库:
select flashback_on from v$database;
可以使用alter database flashback off命令来禁用闪回数据库。这样会自动删除所有现有的闪回数据库日志。
注:只有在独占模式下装载数据库后才能启用闪回数据库,在打开状态下则不可以。
eg:
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog; --如果数据库已经是归档模式,则这步不需要
SQL>alter system set DB_FLASHBACK_RETENTION_TARGET=2880 scope=both;
SQL>alter database flashback on;
SQL>alter database open;
三、闪回数据库示例1、闪回:以独占模式装载数据库,然后按以下其中一种方式去闪回数据库
RMAN>flashback database to time = "to_date('2007-05-27 16:00:00','YYYY-MM-DD HH24:MI:SS')"
RMAN>flashback database to scn=23565;
RMAN>flashback database to sequence=233 thread=1;
SQL>flashback database to timestamp(sysdate-1/24);
SQL>FLASHBACK DATABASE TO SCN 53943;
SQL> FLASHBACK DATABASE TO RESTORE POINT b4_load;
注:可通过V$SESSION_LONGOPS视图监视闪回数据库的进度
2、复查更改:以只读方式打开数据库
3、完成:使用RESETLOGS 以读/写方式打开数据库
四、闪回数据库注意事项
1、闪回数据库操作完成后,打开数据库
*在只读模式下验证使用的目标时间或SCN正确无误
*使用RESETLOGS操作以允许DML
2、“闪回”与“恢复”是对立的。
3、以下情况下不能使用闪回数据库操作:
*控制文件已还原或已重新创建。
*表空间已删除。
*数据文件的大小已被减小。
4、使用TO BEFORE RESETLOGS 子句闪回至上一RESETLOGS 操作前的那一刻。
注:闪回保留目标不能完全保证闪回可用。如果必需的文件需要在快速恢复区中占用空间,可能会自动删除闪回日志。
五、监控闪回数据库
1、查看快速恢复区的磁盘限额
SELECT estimated_flashback_size,flashback_size FROM V$FLASHBACK_DATABASE_LOG;
2、确定当前闪回窗口
SELECT oldest_flashback_scn,oldest_flashback_time FROM V$FLASHBACK_DATABASE_LOG;
3、监视闪回数据库日志中的日志记录
select * from v$flashback_database_stat;
4、V$RECOVERY_FILE_DEST可查看与快速恢复区相关的信息
SELECT name, space_limit AS quota,space_used AS used,space_reclaimable AS reclaimable, number_of_files AS files
FROM v$recovery_file_dest ;
五、保证还原点
使用保证还原点可确保在任何时间通过执行FLASHBACK DATABASE 命令都可闪回到该SCN
create restore point before_upgrade guarantee flashback database;
如普通还原点一样,保证还原点在恢复操作中可用作SCN 的别名。主要区别是保证还原
点绝不会因过期而从控制文件中删除,必须显式删除它。但是,保证还原点还提供与使用
闪回数据库功能相关的特定功能。
在特定SCN 创建保证还原点后,会通过强制执行闪回数据库操作将数据库恢复到该SCN
所对应的状态,即使未对数据库启用闪回日志记录也是如此。如果启用了闪回日志记录,
则创建保证还原点会强迫保留所需的闪回日志,使闪回数据库操作可恢复到最早的保证还
原点创建后的任何时间点。
保证还原点可用于将整个数据库还原到几天或几周前的已知正常状态,只要快速恢复区中
有足够的磁盘空间来存储所需的日志。与普通还原点相同,保证还原点可用于指定
RECOVER DATABASE 操作的时间点。
注:适用于闪回数据库的限制也适用于保证还原点。例如,收缩数据文件或删除表空间会
导致受影响的数据文件无法闪回至保证还原点。
六、闪回数据库和保证还原点
要使用保证还原点,数据库必须满足以下先决条件:
*COMPATIBLE初始化参数必须设置为10.2 或更大值。
*数据库必须在ARCHIVELOG模式下运行。
*要将数据库倒回至保证还原点,FLASHBACK DATABASE 命令需要使用大约从还原点
时间开始的归档重做日志。
*必须配置快速恢复区。保证还原点使用类似于闪回日志记录的机制。与闪回日志记录
一样,Oracle DB 必须将所需日志存储在快速恢复区中。
*如果未启用闪回数据库,则创建第一个保证还原点时(或者如果已删除了先前创建的
所有保证还原点),数据库必须处于装载状态而不是打开状态。
闪回数据库和保证还原点的日志记录需要捕获应用更改之前数据文件块的映像。
FLASHBACK DATABASE 命令可使用这些映像将数据文件恢复至以前的状态。普通闪回日
志记录与保证还原点日志记录的主要区别在于何时记录块,以及是否在快速恢复区空间不
足时删除日志。这些区别会影响日志的空间使用量和数据库性能。
如果启用闪回数据库并定义了一个或多个保证还原点,则数据库执行普通闪回日志记录。
在这种情况下,恢复区会保留闪回至当前时间与目前最早定义的保证还原点之间的任意时
间所需的闪回日志。如果保证还原点需要闪回日志,则不会因空间不足而删除闪回日志。