Oracle恢复数据库某张表某一时刻的数据

测试时误删数据,或是需要还原数据反复测试sql,可以用Oracle的闪回功能使数据库恢复到某一时刻。

恢复数据到某一时刻

sql 复制代码
-- 假设表名为 HOLIDAY

-- 开启行移动
ALTER TABLE HOLIDAY ENABLE ROW MOVEMENT;
-- 恢复数据到某一时刻
FLASHBACK TABLE HOLIDAY TO TIMESTAMP TO_TIMESTAMP('2024-01-15 08:00:00', 'yyyy-mm-dd hh24:mi:ss');
-- 关闭行移动
ALTER TABLE HOLIDAY DISABLE ROW MOVEMENT;
ROW MOVEMENT

不开启行移动会报错 ORA-08189: cannot flashback the table because row movement is not enabled

关于行移动,ChatGPT的回答如下:

在Oracle数据库中,启用行移动(ROW MOVEMENT)是一个用于修改表定义的选项,它允许在表上执行一些特定的操作,如更新、删除和插入行,同时保持表的高度可用性。当你启用行移动时,可以更灵活地修改表结构,包括修改表的行的物理存储位置。

查询某一时刻的数据

sql 复制代码
-- 查询某一时刻的数据
SELECT * FROM HOLIDAY AS OF TIMESTAMP TO_TIMESTAMP('2024-01-15 08:00:00', 'yyyy-mm-dd hh24:mi:ss');
相关推荐
i***11863 分钟前
Django视图与URLs路由详解
数据库·django·sqlite
2***c43523 分钟前
Redis——使用 python 操作 redis 之从 hmse 迁移到 hset
数据库·redis·python
2***d88528 分钟前
redis的启动方式
数据库·redis·bootstrap
j***576838 分钟前
【MySQL】mysqldump使用方法
数据库·mysql·oracle
Coder-coco43 分钟前
在线商城系统|基于springboot vue在线商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·宠物
M***29911 小时前
MySQL:基础操作(增删查改)
数据库·mysql·oracle
2***c4351 小时前
Redis五种用途
数据库·redis·缓存
k***45991 小时前
MySQL----case的用法
android·数据库·mysql
San30.1 小时前
AIGC 时代如何优雅地操作数据库:SQLite + Python 实战与 SQL Prompt Engineering
数据库·sqlite·aigc
n***54381 小时前
MySQL-CPU使用率高的原因排查和解决方法
数据库·mysql