首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle数据库误删数据恢复步骤

经常能在网上看到大家调侃如何“从删库到跑路”。实际上,如果真的发现自己误删库或者误删数据,估计大家应该都是胆战心惊、心惊肉跳了。此刻的心情,肯定比第一次怦然心动要紧张得多。而我们在日常运维中,也经常能接到应用同事反馈生产数据被误删,需要紧急恢复。下面这篇文章详述了Oracle数据库几种误操作数据的场景及恢复过程。

错误update或delete数据

新建表t1并插入数据

为了便于判断恢复时间,先查下此时的数据库时间

模拟误update表t1

使用闪回恢复表t1。注意:为避免闪回时间不准确造成对表的二次误操作,一般情况下DBA只会新建一张闪回表,而不会直接覆盖表数据。数据由应用管理员根据闪回表自行恢复。

此案例也可用作恢复package/procedure/trigger。

这种恢复方式是从undo中恢复,如果数据库繁忙或者需恢复的时间太早,flashback会报错ORA-01555: snapshot too old。这种恢复方式就不适用了,需要用RMAN来恢复。

错误drop table

接着上一个案例,如果用户误drop t1,该如何恢复?

错误truncate table

恢复完成后,t1表0行,t3表77行,说明truncate t1后的业务数据并未覆盖,恢复正常完成。然后使用imp导入t1表数据即可。

总结上述几种恢复过程,以下几点需要注意:

出现误操作时,越早发现问题越好。

数据库recyclebin及flashback_on参数都开启,只是flashback_on为yes时,比较占用闪回空间。

重要事情说三遍:做好生产环境备份!做好生产环境备份!做好生产环境备份!

-END-

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180418G16VQZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券