【无标题】

Oracle闪回功能,在项目中救了我很多次

1. 前言

在项目中,作为一个开发,经常和数据库打交道。数据库一般项目都有两套,一套测试,一套正式,尤其项目上线后,客户还要接着调整功能点,这个时候,因为有旧的单子存在,然后功能又调整了,导致业务流程走不下去了,就需要直接改正式环境的数据库了。一般使用的工具就是Navicat,但是当你改错数据怎么办,这些数据又很重要,解决不了,无疑会给甲方造成严重的经济损失,还好有闪回功能,在调整时救了我很多次。

2. 语法

网上其他闪回介绍的太多,我一般使用的就是查询某个时刻的数据,然后再手动调整,因为调整的这个表可能会有不断的数据更新,所以,更靠谱的方法就是找到你不小心改错的单子,然后查询这条单子,将数据还原。

select * from tableName as of timestamp to_timestamp('2022-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS');

如果你要闪回的表平时都不会修改,那么直接使用闪回语句

--闪回到半个小时之前
flashback table tableName to timestamp (systimestamp - interval '30' minute);
Flashback complete.

如果要闪回数据也是可以的

--时间太远闪回不了
--oracle没有开启闪回功能闪回不了
--数据库包含的表数据已经无法闪回,则不会成功
flashback database to timestamp to_timestamp('2022-10-01 00:00:00','YYYY-MM-DD HH24:MI:SS');
Flashback complete

3. 更完整大佬的文章

超详细闪回技术及原理

你可能感兴趣的:(数据库,oracle,sql)