恢复误删除的数据库数据-Oracle

本文介绍了如何在Oracle数据库中恢复误删除的数据。对于未提交的事务,可以通过rollback回滚;对于已提交的数据,可以使用scn或时间点恢复。详细步骤包括查询scn、根据scn恢复和通过时间点恢复数据。
摘要由CSDN通过智能技术生成

Oracle数据误删快速恢复

1、创建测试数据

--第一步创建测试表
	create table cctest1(
	  id int,
	  name varchar2(100),
	  password varchar2(100)
	);
--第二步插入数据
	insert into cctest1 values(1, 'cc1','cc1') ;
	insert into cctest1 values(2, 'cctest','cctest') ;
	commit;

2、数据未提交【rollback回滚】

	delete from cctest1 where id=1;
	--还未提交事务

删除后未提交事务,通过rollback进行数据回滚。

3、数据已提交

	delete from cctest1 where id=1;
	commit;--提交事务

3.1、通过scn恢复数据

1、获得当前数据库的scn号

select dbid,current_scn from v$database;
    在这里插入图片描述

2、查询当前scn号之前的scn【当前得到的肯定是数据已经删除后的scn号】

select * from cctest1 as of scn 590263812 ; (查看在当前scn号中数据是否存在,当数据存在时通过改sch号恢复数据)
在这里插入图片描述
在这里插入图片描述

3、恢复数据

flashback table cctest1[表名] to scn 590243649;

	alter table cctest1  enable row movement;--开启行移动功能
	flashback table cctest1 to scn 590243649; --上一步找到的scn号
	alter table cctest1 disable row movement;--关闭行移动功能

注意点:在这里插入图片描述

3.2、通过时间恢复数据

1、查询数据库系统当前时间【注意是数据库系统时间

select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;

2、查询某个时间点的数据【该时间点的数据是否是该恢复的数据,需要自行判断

select * from cctest1[表名] as of timestamp to_timestamp(‘2020-10-21 20:41:58’,‘yyyy-mm-dd hh24:mi:ss’); (如果不是,则继续缩小范围)
    在这里插入图片描述
在这里插入图片描述
  3、恢复数据

		alter table cctest1  enable row movement;--开启行移动功能
		flashback table cctest1 to timestamp 
			to_timestamp('2020-10-21 20:40:58','yyyy-mm-dd hh24:mi:ss'); 
		alter table cctest1 disable row movement;--关闭行移动功能

在这里插入图片描述


更多数据恢复手段待完善中,如有问题望指正,谢谢

学习源于网络,实践忠于生活

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值