欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-11 19:53:07
...

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;
    恢复误删除的数据库数据-Oracle

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

select * from cctest1 as of scn 590263812 ; (查看在当前scn号中数据是否存在,当数据存在时通过改sch号恢复数据)
恢复误删除的数据库数据-Oracle
恢复误删除的数据库数据-Oracle

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;--关闭行移动功能

注意点:恢复误删除的数据库数据-Oracle

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’); (如果不是,则继续缩小范围)
    恢复误删除的数据库数据-Oracle
恢复误删除的数据库数据-Oracle
  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;--关闭行移动功能

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


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

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