数据库数据误删除恢复

1.2 表误删
【oracle表误删恢复处理(没有使用PURGE[用于清空回收站]永久删除选项)】
 
flashback数据库闪回技术
数据库级别:Flashback Database
表级别:Flashback Drop和Flashback Table,Flashback Data Archive
记录级别:Flashback Version Query和Flashback Transaction Query
 
语法:
1).flashback table table_name to timestamp ....  [根据时间点闪回]
2).flash table table_name to scn ...  [根据scn号回退,实际操作基本上不会用到]
3).flashback table table_name to timestamp ... enable triggers. [创建表,开启行移动模式,用的不多]
4).flashback table a to TIMESTAMP systimestamp - interval '5' minute;  [回退到几分钟之前,用的多]需要开启行移动(alter table a enable row movement;)
 
1.2.1一.表的恢复
1.  从flashback(闪回技术)里查询被误删的表
select * from sys.recyclebin$;(如果不知道误删的是哪一张表,查看最近删除的表)
2.执行表的恢复
flashback table a to before drop (a表示你要恢复的表名)
注意:如果闪回的表名与当前的表名相同,需要重命名才可以闪回
flashback table a to before drop rename to a1;
 
 
1.1.2二.表数据的恢复
1.先用Flashback Transaction Query视图查询(可以查询表名称,事务提交时间等字段)
语法:
select * from flashback_transaction_query where table_name='a' (a表示根据表明查)
 
2.执行表记录恢复
1.一般先根据时间进行查询,查询语句模式为
select * from a as of timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); a指表名称,time指某个时间点
      如select * from a as of timestamp to_timestamp('2009-12-11
20:53:57','yyyy-mm-dd hh24:mi:ss');
2.数据直接退回到某个时间段,需要开启行移动功能
行移动语句(alter table a enable row movement;)
,退回功能语句为flashback table tb to timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss');
   如flashback table a to timestamp to_timestamp('2009-12-11
20:47:30','yyyy-mm-dd hh24:mi:ss');
 
【mysql数据误删情况要有备份情况才能恢复】

你可能感兴趣的:(数据库mysql,oracle,mycat,读写分离)