如何恢复被truncate掉的表?

0    819    5

Tags:

👉 本文共约2235个字,系统预计阅读时间或需9分钟。

恢复的方法很多,但是还是需要根据具体情况来实施,例如常见的备份恢复,导出导入,日志挖掘,闪回等等。

Oracle

可以参考 【DB宝73】Oracle中使用包FY_Recover_Data.pck来恢复truncate误操作的表:https://www.dbaup.com/oraclezhongshiyongbaofy_recover_data-pcklaihuifutruncatewucaozuodebiao.html

MySQL

可以参考:https://www.dbaup.com/dbbao43mysqlwucaozuoshanhuihuifuliqizhimy2sql.html

原理:挖掘之前的原始Redo日志,生成原始SQL。

PostgreSQL

可以根据场景选择不同的方法,参考:

原理:挖掘之前的原始Redo日志,生成原始SQL。

TiDB

参考:https://www.dbaup.com/tidbhuifubeiwushanchudeshujuhuobiao.html

OceanBase

参考:https://www.oceanbase.com/docs/oceanbase-database/oceanbase-database/V3.2.1/flashback-query

Oracle 提供了记录级别的闪回查询(Flashback Query)功能,该功能允许用户获取某个历史版本的数据。OceanBase 数据库在 V2.x.x 版本后也支持了该功能,且同时支持 MySQL 和 Oracle 两种模式下的查询,Oracle 模式从 V2.2.30 版本开始支持,MySQL 模式从 V2.2.71 版本开始支持,二者语法有些区别。

Oracle 模式支持 SCN(System Change Number)和 TIMESTAMP 两种维度的查询,MySQL 模式支持 SNAPSHOT 维度的查询,在 OceanBase 数据库中,SCNSNAPSHOT 都是指事务版本号,只是因为 Oracle 和 MySQL 中概念不同,起了不同的名字。

OB的闪回支持3种类型:

关于闪回查询

闪回查询(Flashback Query)是 OceanBase 数据库提供的一种可以查看记录某个历史版本数据的能力。默认的查询 SQL 返回的是当前事务隔离级别下允许查询的已提交的版本数据,如果要查询历史上提交的版本,可以在表后指定历史时间信息。

示例:闪回查询历史记录

闪回查询对能查询的最早时间有个限制,受变量 undo_retention 控制。如果 undo_retention 未设置或设置为 0,则可以查询集群上次 major freeze 之后最后一次 minor freeze 之后的历史数据。变量 undo_retention 的修改需要有租户的管理员权限,通过 set global 命令修改,并且只对修改之后的会话产生的数据生效。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复