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

2024-12-13 10:35:17
推荐回答(4个)
回答1:

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

具体操作步骤如下:

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

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

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

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

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

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

回答2:

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;

回答3:

--开启行移动功能
alter table 表名 enable row movement;
--恢复表数据
flashback table 表名 to timestamp to_timestamp('2014-05-19 09:40:00','yyyy-mm-dd hh24:mi:ss');
上述时间为删除数据的时间
备注:恢复后请关闭行移动功能

回答4:

1、将你10天前的数据找(如果你的数据还在的话)
create table tmp as
select * from table_name as of timestamp trunc(sysdate)-10;
2、在tmp表里面找到被你删掉的那100条数据,插回原表。
3、不过希望不大了,看你的问题已经提了好久了,如果是刚刚被删掉的话,也许可以找回。
注:trunc(sysdate)-10 就是一个时间点,你可以适当的调整一下这个时间点,来找到你想要的数据。
---
以上,希望对你有所帮助。