日增进:Oracle如果一不小心drop删表了怎么办

发布于:2023-09-15 ⋅ 阅读:(87) ⋅ 点赞:(0)

Mochou作为一个数据工作者,本应时刻对数据保持敬畏之心,但突然有一天某种原因,他把表删了,表结构还能重新创建,那表数据怎么办? 

大多数人在一生要强的Coding生涯中,除了谨慎谨慎再谨慎的情况下,依然都会或多或少的遇到删库删表操作,这个时候并不需要那么急着提桶跑路,数据库在设计之初就始终牢记初心,不忘使命,对数据的"删除"是非常严肃的

我们都知道IDU这种都有归档日志以供恢复,同样的删除表DROP亦有。这里拿Oracle举例,假设Mochou删除了一个表:MY_TABLE

DROP TABLE MY_TABLE;  -- 该sql为举例,切勿实际运行

那么我们可以

1.先检索添加在库里找出这个表的删除信息

-- 查找删除的表的OBJECT_NAME
select * from RECYCLEBIN where DROPTIME > sysdate - 1 and type = 'TABLE' and ORIGINAL_NAME like 'MY_TABLE'

2.恢复该表(恢复时间为drop前,会自动建表,自动完善数据)

-- 恢复表
flashback table BIN$BJPzIkz2ZTjgYwEAAH80QA==$0 to before drop ;	-- MY_TABLE

注意:如果这个表后面又建了同名表,需要对该表进行重命名,不然恢复会报错

-- 如果已经新建了表,将新表改名
ALTER TABLE MY_TABLE rename to MY_TABLE_BAK;


网站公告

今日签到

点亮在社区的每一天
去签到