在oracle中如何找回被删除的数据?

我删除了100条数据并且commit了,现在我想把这100条数据找回来,注意,不是把数据库还原到删除之前的状态,而是找回这丢失的100条数据,因为这时数据库依然在运行,数... 我删除了100条数据并且commit了,现在我想把这100条数据找回来,注意,不是把数据库还原到删除之前的状态,而是找回这丢失的100条数据,因为这时数据库依然在运行,数据库中会增加很多新数据,这些新增的数据是不能被删掉的。请高手解答。
如果在该表中包含有lob型字段该怎么办?我的表中重要的信息就是lob字段中存储的一些xml文件
展开
 我来答
xiawei123
高粉答主

2019-07-31 · 每个回答都超有意思的
知道答主
回答量:1626
采纳率:100%
帮助的人:47.6万
展开全部

1、首先新建一张测试表TEST,里面输入记录。由于删除/更新/插入恢复步骤相同,这里仅演示删除数据的情况。

2、删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了。

3、恢复之前先确定要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的。

SELECT *

FROM TEST AS OF TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');

4、下面进行表数据恢复。

FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');

可以看到报错了,原因是没有开启行移动。

5、开启该表的行移动。

ALTER TABLE TEST ENABLE ROW MOVEMENT;

6、再次执行数据恢复。

FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');

然后查看数据情况,可以看到已经恢复了。

嗨格式
2023-06-01 · 百度认证:昆山开心盒子软件有限公司官方账号
嗨格式
嗨格式是苏州开心盒子软件有限公司旗下的独立品牌。苏州开心盒子软件有限公司是一家专注软件研发的互联网科技公司。
向TA提问
展开全部

如果删除操作未提交,则可以使用回滚段将数据库恢复到删除操作之前的状态。在Oracle中可以通过查询V$ROLLNAME视图获取当前数据库的回滚段名称,然后使用回滚语句将数据库恢复到删除操作之前的状态。如果还是不能找回的话,建议借助专业的数据恢复工具——嗨格式数据恢复大师

具体操作步骤如下:

电脑端点击这里免费下载>>> 嗨格式数据恢复大师

1.免费下载嗨格式数据恢复大师并运行软件。在软件首页中,选择需要的恢复类型来恢复数据。

2.嗨格式数据恢复大师主界面中有四种恢复类别,分别是快速扫描、深度扫描、格式化扫描和分区扫描。如果需要恢复U盘数据,请将已经丢失数据的U盘插入电脑,并选择“快速扫描恢复”模式对丢失数据的磁盘进行扫描。

3.选择原数据文件所存储的位置。此处可以直接选择对应数据误删除的磁盘,并点击下方的“开始扫描”即可自动对丢失数据的U盘进行扫描。

4.等待扫描结束后,可以按照文件路径或者文件类型两种方式来依次选择需要恢复的文件,并点击下方的“恢复”选项,即可找回所有丢失的数据。

请注意,在恢复之前,谨慎考虑可能的风险,以及已经在电脑上创建或修改的其他文件。此外,使用数据恢复软件时,请注意不要将恢复的数据覆盖到您当前正在使用的数据上,选择备份新数据并保存至其他文件夹或其他设备中。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔驰M888
2010-12-23 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2708万
展开全部
1、将你10天前的数据找(如果你的数据还在的话)
create table tmp as
select * from table_name as of timestamp trunc(sysdate)-10;
2、在tmp表里面找到被你删掉的那100条数据,插回原表。
3、不过希望不大了,看你的问题已经提了好久了,如果是刚刚被删掉的话,也许可以找回。
注:trunc(sysdate)-10 就是一个时间点,你可以适当的调整一下这个时间点,来找到你想要的数据。
---
以上,希望对你有所帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
果果是熊孩子
2018-12-11
知道答主
回答量:8
采纳率:0%
帮助的人:5175
展开全部
Oracle10 以上版本,我前一天删的数据都可以恢复,不要慌,认真跟着每步做就好啦嘻嘻(PS:其实第一次删标准表数据的我也很方哈哈哈);
举个栗子:
某天误删了标准表的一条数据,就是采购接收的RCV_TRANSACTIONS表
恢复过程:
1、创建这个接收表的备份(Bak)表,备份当天前两天的所有该表的数据(包括误删的)(这个不会影响原表数据的,没关系,建吧)
CREATE TABLE cux_rcv_transactions_bak1 AS ---表名自己起(XXX_Bak)
select * from rcv_transactions as of timestamp sysdate-2 ; ---恢复前两天天的数据
要恢复数据的这个request_ID(某字段)我是记下来了,所以不用重新费时间去找(这个可以用原表跟备份表对这前两天的数据进行比较,用NOT EXIST)
Request_id
698479;
2、找到备份表里面的这条数据,
SELECT * FROM cux_rcv_transactions_bak1
WHERE TRANSACTION_id = 698479;
3、将这条数据再次插入进RCV_Transactions表里面
INSERT INTO rcv_transactions
SELECT * FROM cux_rcv_transactions_bak1
WHERE TRANSACTION_id = 698479;
4、可以找到原表原来的数据来
SELECT * FROM rcv_transactions
WHERE TRANSACTION_id = 698479;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sengehao
推荐于2017-04-22 · 超过30用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:72万
展开全部
你用的是oracle几呀?
要是10 版本以上的话,好说,
92的话,要从undo中找

SELECT * FROM tablename AS OF TIMESTAMP
TO_TIMESTAMP('2010-12-15 11:10:17', 'YYYY-MM-DD HH:MI:SS')

要是91或8的话,那就麻烦了!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式