大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。

@TOC

首先,这个短时间内,通常是值 undo 段没有被覆盖,undo 保留的时间为多长呢?

1、需要看 undo_retention 的设置,默认为 900s,也就是 15 分钟。
2、需要看数据库的业务繁忙程度,如果1天切一个归档那种,3天前删的说不定都能用 UNDO 找回来。

好的,科普完了!

如果,两分钟前不小心误删了一笔数据,如何快速找回?

1、查看 UNDO 中 5 分钟前数据是否还在

1
select * from 用户.表 as of timestamp to_timestamp('2021-09-12 10:30:00', 'yyyy-mm-dd hh24:mi:ss');

2、防止 UNDO 中数据被覆盖,先创建一张备份表将5分钟前数据备份

1
2
3
create table 用户.表_20201217
as
select * from 用户.表 as of timestamp to_timestamp('2021-09-12 10:30:00', 'yyyy-mm-dd hh24:mi:ss');

3、用备份表和原表比对数据,将误删的数据插入原表中

没有sql,自己搞吧!可以用 PLSQL等工具导出!

注意:此方法仅适用于 delete 等 DML 误删误操作恢复,DDL 不支持!


往期精彩文章

Oracle 一键巡检自动生成 Word 报告
Oracle 一键安装合集
Oracle一键安装脚本的 21 个疑问与解答
Oracle一键巡检脚本的 21 个疑问与解答
全网首发:Oracle 23ai 一键安装脚本(非 RPM)
Oracle 19C 最新 RU 补丁 19.24 ,一键安装!
Oracle Linux 7.9 一键安装 Oracle 19C
RedHat 9.4(aarch64) 一键安装 Oracle 19C
openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC
RHEL 7.9 一键安装 Oracle 19C 19.23 RAC
Oracle DataGuard GAP 修复手册
优化 Oracle:最佳实践与开发规范
DBA 必备:Linux 软件源配置全攻略
Linux 一键配置时钟同步全攻略


感谢您的阅读,这里是 Lucifer三思而后行,欢迎点赞+关注,我会持续分享数据库知识、运维技巧。