Oracle 闪回版本(闪回表到指定SCN)

1.创建目录

复制代码
mkdir /u01/app/oracle/flash

2.配置FRA

复制代码
alter system set db_recovery_file_dest_size=15G;

alter system set db_recovery_file_dest='/u01/app/oracle/flash';

3.设置闪回参数--确保可以闪回48h内的数据库

复制代码
 alter system set db_flashback_retention_target=2880;

4.开闪回

复制代码
alter database flashback on;

实践:闪回部分数据

1.解锁hr账户连接数据库

复制代码
alter user hr identified by hr account unlock;

2.运行脚本

在这个脚本中,有两个事务,我们尝试保留insert的事务,回滚update的事务。

复制代码
conn hr/hr@prod4
insert into departments values(290,'Poduct Sales',114,1800);
insert into departments values(300,'Busses Sales',203,1700);
insert into departments values(280,'Mac Sales',205,1700);
commit;
--update
update departments set department_id=310 where department_id=300;
update departments set department_name='Iphone sales' where department_id=280;
commit;

3.闪回版本查询

复制代码
SELECT versions_xid XID, versions_startscn START_SCN,
versions_endscn END_SCN, versions_operation OPERATION,
department_id,department_name
FROM departments
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;

可以看到最下面的几行是刚才执行脚本所做的操作。

3.启用行移动

复制代码
alter table departments enable row movement;

4.指定scn号闪回表

复制代码
flashback table departments to scn 2148345;

5.校验表,发现表已经闪回到想要的时间点


update操作被回滚了。

相关推荐
小王和八蛋6 分钟前
TDDL、Amoeba、Cobar、MyCAT 架构比较
数据库
jnrjian7 分钟前
Oracle 列A=列A 相当于列不为空,条件无意义
数据库·sql
爱敲点代码的小哥8 分钟前
csv和表格的转换 二进制序列化 / 反序列化 窗体跳转和传值
数据库
WarPigs15 分钟前
数据库笔记
数据库·笔记
欢乐的小猪17 分钟前
windows10如何安装多个版本mysql
数据库·mysql
dishugj19 分钟前
oracle 监听常见报错解决
数据库·oracle
电商API_1800790524720 分钟前
获取淘宝商品视频API教程:从授权到落地实战
大数据·数据库·人工智能·数据分析·音视频
工业甲酰苯胺30 分钟前
使用 C# 和 SQL Server 自动化邮件中的用户分配数据处理
数据库·c#·自动化
Antoine-zxt33 分钟前
MySQL数据脱敏技术全解析:从原理到可视化实践
数据库·mysql
DemonAvenger37 分钟前
深入Redis Stream:打造高效消息队列系统的实战指南
数据库·redis·性能优化