2018-03-05
oracle-闪回
数据库 评论:0 浏览:109

转载请注明出处:https://oldnoop.tech/c/135.html

基本概念


Flashback(闪回)
实现从回滚段中读取表一定时间内操作过的数据,可用来进行数据比对,或者恢复意外提交造成的错误数据,该项特性也被称为Flashback(闪回)。
回滚段:回滚段用于存放数据修改之前的值。



闪回查询


-- 初始化参数undo_retention
undo_retention=1800 (1800s=0.5h),
若条件允许,可以适当调大此参数。
-- 是否强制保留undo_retention的时间
select tablespace_name, retention from dba_tablespaces where tablespace_name like 'UNDO%';
alter tablespace undotbs1 retention guarantee;


配置闪回数据库


开启闪回数据库:
--必须配置闪回恢复区
show parameter db_recovery
--必须归档模式shutdown immediate;
startup mount exclusive;alter database archivelog;
--设置闪回保留的目标时间(只是target,2880分钟=两天)
alter system set db_flashback_retention_target=2880;
--开启数据库闪回
alter database flashback on;
--打开数据库
alter database open;

关闭闪回数据库:
startup mount exclusive;alter database flashback off;alter database open;

使用闪回数据库

RMAN和SQL>提示符下都可以执行闪回。但二者有些细微差别。
例如RMAN可以基于线程和特定日志号进行闪回。
--RMAN基于线程和特定日志号进行闪回举例
RMAN> flashback database to sequence=307 thread=2;
--在SQL>提示符下,闪回到一小时前的状态
shutdown immediate;
startup mount exclusive;
flashback database to timestamp sysdate-(1/24);
--read only打开检查确定是要恢复的状态
alter database open read only;--最后resetlogs打开
alter database open resetlogs;
--从闪回数据库排除表空间(创建时指定或后期修改flashback off)
alter tablespace dbs_d_test flashback off;
--若重新启用表空间闪回,需要打开flashback后,重新启动数据库。
alter tablespace dbs_d_test flashback on;
--使用担保还原点fla_init
create restore point fla_init guarantee flashback database;
flashback database to restore point fla_init;

监视闪回数据库
--查询可以将数据库闪回到多久之前
select * from v$flashback_database_log;
--查询数据库的闪回状态
select current_scn, flashback_on from v$database;
--监视每小时生成闪回数据的速率
select * from v$flashback_database_stat;



  • 转载请注明出处:https://oldnoop.tech/c/135.html

Copyright © 2018 oldnoop.tech. All Rights Reserved

鄂ICP备2023022735号-1