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

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

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');

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

温馨提示:内容为网友见解,仅供参考
第1个回答  2023-06-01

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

具体操作步骤如下:

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

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

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

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

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

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

第2个回答  2010-12-23
1、将你10天前的数据找(如果你的数据还在的话)
create table tmp as
select * from table_name as of timestamp trunc(sysdate)-10;
2、在tmp表里面找到被你删掉的那100条数据,插回原表。
3、不过希望不大了,看你的问题已经提了好久了,如果是刚刚被删掉的话,也许可以找回。
注:trunc(sysdate)-10 就是一个时间点,你可以适当的调整一下这个时间点,来找到你想要的数据。
---
以上,希望对你有所帮助。
第3个回答  2018-12-11
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;
第4个回答  推荐于2017-04-22
你用的是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的话,那就麻烦了!!本回答被提问者采纳

在oracle中如何找回被删除的数据?
在Oracle数据库中,当你不小心删除了数据,其实不必担心,可以采取一系列步骤找回。首先,创建一个测试表TEST,输入一些测试数据。接下来,我们仅演示删除数据的操作,例如删除一条记录,此时可以通过查询确认删除的记录,如图所示,记录2已经被移除。为了确定恢复的起始点,查看表的记录状态,确定一个时间点...

oracle怎么还原删除的数据?
Oracle数据库误操作delete数据后,恢复数据可以使用闪回或还原功能。在Oracle数据库中,如果误操作执行了DELETE语句删除了数据,是有可能恢复的。如果您的Oracle数据库启用了闪回(Flashback)功能,并且删除的数据在闪回范围内,您可以使用闪回查询(Flashback Query)来恢复数据。闪回功能允许您查看过去某个时间...

Oracle数据恢复—Oracle数据库误删除的数据恢复方法
恢复误删除Oracle数据库数据的第一种方法是利用Oracle提供的闪回功能。适用于单条记录的delete删除情况。首先需要确定删除操作的时间点,如无法确定则选择尽可能接近的删除数据前的时间。通过SQL语句`select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')`获取删...

【北亚数据恢复】oracle误删除的表和oracle误删除的表数据如何恢复?
首先,尝试利用flashback table功能来找出被删除的表,通过输入相应的查询语句来查找数据痕迹。例如:1. 在flashback_transaction_query视图中,输入表名、关键字段和删除时间点的信息。2. 如果能确定删除的时间点,也可以使用特定查询来找到数据丢失的前一个状态。对于已删除的表记录,接下来可以执行以下操...

在oracle中如何找回被删除的数据?
1、首先新建一张测试表TEST,里面输入记录。由于删除\/更新\/插入恢复步骤相同,这里仅演示删除数据的情况。2、删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了。3、恢复之前先确定要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的。SELECT FROM TEST AS OF TIMESTAMP TO...

oracle的一个数据表被删除,如何恢复数据,以及查询是谁进行了操作_百度...
首先将被DROP掉的数据表所在的表空间OFFLINE 通过查询数据字典或者LOGMINER找到被DROP掉数据表的DATA_OBJECT_ID,如果此步骤中得不到这个DATA_OBJECT_ID,则需要在NON-DICT非字典模式下 启动PRM,进入NON-DICT非字典模式,并加入被DROP掉数据表所在的表空间的所有数据文件,之后SCAN DATABASE+SCAN TABLE ...

如何恢复程序中删除的oracle数据
1、获得当前数据库的scn号 select current_scn from v$database; (切换到sys用户或system用户查询)查询到的scn号为:1499223 2、查询当前scn号之前的scn select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)3、恢复删除且已提交的...

oracle数据库数据删除后如何恢复?
删除表后,可以采用如下操作:在 user_recyclebin中找到最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:CREATE TABLE QUICK_TABLE AS SELECT * FROM ...

oracle数据库误操作把表删除了,不知道删除了哪张表,怎么找回
1、从flash back里查询被删除的表 select * from recyclebin 2.执行表的恢复 flashback table tb to before drop,这里的tb代表你要恢复的表的名称。二:表数据恢复 对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复,一般步骤有:1、先从flashback_transaction_query视图...

oracle数据库删除错了表怎么恢复
因为oracle保存在回滚保持段里的数据时间有一定的时间限制由undo_retention 这个参数值决定。二、如果是删除一段时间了,但你有比较新的数据库备份,就通过备份来恢复。新建一个库,把备份还原上去,导出表数据,再导入到现在用的库中去。三、如果删除一段时间了,并且无备份,但是数据在写入表的时候同时...

相似回答