ENABLE_FLASHBACK 0 动态,系统级,是否启用闪回查询,0:不启用;1:启用
闪回技术主要是通过回滚段存储的 UNDO 记录来完成历史记录的还原。设置
ENABLE_FLASHBACK 为 1 后,开启闪回功能。DM 会保留回滚段一段时间,回滚段保留的
时间代表着可以闪回的时间长度。由 UNDO_RETENTION 参数指定。
开启闪回功能后,DM 会在内存中记录下每个事务的起始时间和提交时间。通过用户指
定的时刻,查询到该时刻的事务号,结合当前记录和回滚段中的 UNDO 记录,就可以还原出
特定事务号的记录。即指定时刻的记录状态。从而完成闪回查询。闪回查询功能完全依赖于
回滚段管理,对于 DROP 等误操作不能恢复。闪回特性可应用在以下方面:
自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复;
NAME TYPE VALUE
ENABLE_FLASHBACK SYS 0
UNDO_RETENTION SYS 90.000000
–修改参数,UNDO_RETENTION最大86400也就是1天
alter system set ‘ENABLE_FLASHBACK’ =1 both;
alter system set ‘UNDO_RETENTION’ = 9000;
NAME TYPE VALUE
ENABLE_FLASHBACK SYS 1
UNDO_RETENTION SYS 9000.000000
–创建表
create table t1(id int,c_name varchar(100));
insert into t1 values(1,‘张三’);
insert into t1 values(2,‘李四’);
insert into t1 values(3,‘王五’);
ID C_NAME
3 王五
VERSIONS_STARTTIME VERSIONS_ENDTIME ID C_NAME
2022-01-20 16:49:37 NULL 1 张三
2022-01-20 16:49:37 NULL 2 李四
2022-01-20 16:49:37 NULL 3 王五
2022-01-20 16:49:37 NULL 4 赵六
– 将t1表备份
create table t1_bak as select * from t1;
– 创建临时表存放指定时间的闪回数据
create table t1_tmp as select * from t1 when timestamp ‘2022-01-20 16:49:37’
–删除t1表
drop table t1 ;
– 新建t1表,并将临时表t1_tmp 的数据导不进去
create table t1 as select * from t1_tmp
–t1表恢复了删除的数据
select * from t1;
insert into t1 select * from t1_bak;
–也可以通过闪回事务查询以视图V$FLASHBACK_TRX_INFO查询在事务级对数据库所做的更改
select * from V$FLASHBACK_TRX_INFO
希望达梦越来越强!
文章
阅读量
获赞