查看数据库表某一段时间的镜像

1、Oracle(闪回查询)

Oracle的闪回查询直接支持查询表的历史版本:

-- 查询表在 2025-11-01 00:00:00的状态
SELECT * FROM 表名 AS OF TIMESTAMP TO_TIMESTAMP('2025-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS');
​
-- 若需精确到SCN(系统更改号)
SELECT * FROM 表名 AS OF SCN 123456;

2、MySQL(利用 binlog 日志恢复历史版本)

MySQL 本身不直接支持表的历史镜像查询,但可以通过二进制日志(binlog)回放来恢复指定时间点的表数据:

-- 1. 先通过binlog找到表在目标时间点的操作记录
-- 使用mysqlbinlog工具(命令行,非SQL)提取指定时间范围的日志
mysqlbinlog --start-datetime="2025-11-01 00:00:00" --stop-datetime="2025-11-02 00:00:00" /var/log/mysql/binlog.000001 > history.sql
​
-- 2. 分析history.sql,提取目标表的操作,反向恢复到临时表查看

3、PostgreSQL(利用系统表pg_stat_get_snapshot或时间线)

PostgreSQL 可通过pg_stat_get_snapshot或时间线恢复(需开启归档):

-- 方法1:使用时间点恢复(PITR)到临时库后查询(需提前配置归档)
-- 方法2:如果表有版本控制(如使用temporal tables插件)
SELECT * FROM 表名 AS OF SYSTEM TIME '2025-11-01 00:00:00';
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值