日期:2014-5-17 浏览次数:21480次

oracle 刚删除了一行数据怎么恢复
本要删除A数据表中的一行数据时,不小心将表名写成了B,现在想恢复B中刚删除的的着一行数据怎么办,求对应的sql语句

------解决方案--------------------
如果启用了row movement,
ALTER TABLE table ENABLE ROW MOVEMENT;
则可以用
flashback table table_name to timestamp to_timestamp(...);
如果没有,则用
select * from table_name as of timestamp to_timestamp(...);把删除的row查询出来再insert。

------解决方案--------------------
第一步:找到删除数据的操作时间从( v$sql 或者 v$sqlarea 视图里面查询 )
select r.FIRST_LOAD_TIME,r.SQL_TEXT,r.optimizer_mode,r.module,r.action,r.LAST_ACTIVE_TIME 
from v$sqlarea r 
order by r.FIRST_LOAD_TIME desc ;
第二步:
create table t_table_recove
as
select * from t_table 
as of timestamp to_timestamp('2010-06-02 11:36:53','yyyy-mm-dd hh24:mi:ss');

to_timestamp('2010-06-02 11:36:53.000000','yyyy-mm-dd hh24:mi:ss.ff')

再将恢复后的数据放到原来表就可以了.