记录一次oracle数据库表被drop的紧急恢复过程

问题:

oracle数据库的表被drop,需要恢复数据。

背景:

部门项目的数据库是通过sql脚本维护,谁添加或修改了表就将修改添加到一个维护数据库的sql文件里,在升级代码时顺便执行脚本进行数据库更新。所以sql文件需要可以重复执行而不丢失数据。不过新来的小伙子忘记了这个细节,为了更新表结构,添加字段,先把表drop掉了,然后重新创建。这样导致表中的客户数据都丢失了,所以领导赶紧找我想办法恢复。

本人也是第一次遇到这个情况,所以组长找了另外一位同事来帮忙,同事直接给了个网址,让我自己尝试:网页地址 。可能是因为表已经被再次drop和新建过,所以上面的方法都不成功。

后来自己谷歌到了另外一个网页:网页地址 ,觉得这里提供的第二种从回收站恢复的方式可行,最后使用此方法成功恢复了数据。

成功恢复数据的核心步骤:

第一步,允许行物理移动:

ALTER TABLE tableName ENABLE row movement ;

第二步,首先需要查询user_table视图找到被删除的表:

select object_name,original_name,type,droptime from user_recyclebin;

此时看到的object_name就是表被删除后oracle回收站对应的真正名字。

第三步,恢复数据:

flashback table "BIN$j5bB++jdROGUxkdCoH+msA==$0" to before drop rename to t_table_name;

根据回收站中的表名称将其恢复,数据回到t_table_name表中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值