恢复误删除的数据库数据-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;
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;--关闭行移动功能
更多数据恢复手段待完善中,如有问题望指正,谢谢
学习源于网络,实践忠于生活
上一篇: Git专题:恢复已删除的分支:恢复误删除的分支数据
下一篇: UNSERIALIZE——反序列化漏洞