暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle恢复误删数据

海中的舵手 2021-05-28
674

在开发中不可避免的就是与数据库打交道,总会在某些不经意的时候误删数据,这时候我们便需要想办法修复删除的数据。主要介绍两种方法,一种是使用FlashBack闪回数据,另一种是根据时间戳查出来数据后,自行选择要插入的数据。

建议:使用时间戳查询,不要直接将表回退到某个时间点。回退到某个时间点,如果有其他关联表的话可能会影响数据的业务完整性。

 

使用FlashBack恢复数据

如果要在某个表上使用 FlashBack Table 特征,则要求必须具有以下条件:

用户必须具有 FlashBack ANY TABLE 系统权限或 FlashBack 对象权限

用户必须在表上具有SELECTINSERTDELETE ALTER 权限

必须合理设置初始化参数undo_retention, 以确保 UNDO 信息保留足够时间

必须激活行移动特征:ALTER TABLE EMP ENABLE ROW MOVEMENT

模拟操作步骤:

1. 查询当前数据

SELECT * from LAS_CONTRACT_INFO WHERE id <100988

 


2. 模拟误删数据

DELETE FROM LAS_CONTRACT_INFO WHERE id <100988

 


3. 恢复数据

ALTER TABLE LAS_CONTRACT_INFO ENABLE row movement ;flashback table LAS_CONTRACT_INFO to timestamp to_timestamp('2021-05-18 14:20:00','yyyy-mm-dd hh24:mi:ss');

 

使用时间戳手动恢复数据

使用时间戳查询到某个节点前的数据

select * from LAS_CONTRACT_INFO as of timestamp to_Date('2021-05-18 14:30:00','yyyy-mm-dd hh24:mi:ss') WHERE id <100988

 


查询到时间点未进行修改的数据后,可以根据实际情况进行还原。

 

参考链接:

https://blog.csdn.net/yiwuya/article/details/3910989

https://blog.csdn.net/life_dba/article/details/8976410

http://blog.itpub.net/23500123/viewspace-1115909/

 

 

 


文章转载自海中的舵手,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论