oracle 误删数据、表的恢复
注意:鉴于oracle的特殊性,表名基本为大写(注意大小写问题)。
一、delete 误删数据问题
1、根据v$sqlarea进行恢复,把表恢复到删除时间点
- 查询sql执行时间
select SQL_TEXT,LAST_ACTIVE_TIME from v$sqlarea
where LAST_ACTIVE_TIME > to_date('2020-07-09 9:30:27','yyyy-mm-dd hh24:mi:ss')
and SQL_TEXT like '%表名%';
- 根据时间进行恢复
INSERT INTO 表名
select * from 表名 AS OF TIMESTAMP to_timestamp('2020-07-09 9:32:27','yyyy-mm-dd hh24:mi:ss');
2、根据闪回把表恢复到某个时间点
-- 直接闪回某张表到某个时间点
flashback table 表名 to timestamp to_date('2020-07-09 09:49:20','yyyy-mm-dd hh24:mi:ss');
-- 出现异常则先授权,开启行移动功能
alter table 表名 enable row movement;