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

Oracle生产事故案例-数据快速恢复

问题描述:

3月份的某天,开发人员操作表t_xxx失误,未加任何where条件

解决方案:

1.通过闪回恢复一张新表t_xxx_180313_1548,操作失误时间为15点48分33秒

2.通过新表恢复业务表t_xxx的字段orderid

失误sql执行过程

实施步骤:

1.0 通过闪回恢复一张新表t_xxx_180313_1548

-- 闪回

create table t_xxx_180313_1548 as

select * from t_xxxas of timestamp to_timestamp('2018-03-13 15:48:00','yyyy-mm-dd hh24:mi:ss')

2.0 通过新表恢复业务表t_xxx的字段orderid

-- 创建索引

create index idx_eo_pk_orderfee on t_xxx_180313_1548 (pk_orderfee) nologging parallel 4 tablespace nnc_index01;

alter index idx_eo_pk_orderfee logging parallel 1;

-- 恢复表t_xxx数据

update t_xxx a

set a.orderid = (select b.orderid from t_xxx_180313_1548 b

where a.pk_orderfee = b.pk_orderfee

)

where exists (select 1

from t_xxx_180313_1548 b

where a.pk_orderfee = b.pk_orderfee

)

恢复语句执行过程

经验教训:

整个处理过程历时近40分钟,虽然最后解决了问题,也未对业务造成太大影响,但好好回顾一下,很多地方做的不够好……

ps:好久没处理过这么紧急的问题,不禁想起,毕业前几年在lenovo维护工厂系统时,整个车间上千名工人原地站着,等着你把系统问题解决……现在回想起来,当时还是蛮淡定和习惯的,现在反而多了一些杂念和不习惯,还好脑袋比以前要清晰一些……

1. 紧急应对方案在哪

不可否认,应对逻辑操作失误还是缺乏经验,也没有制定成熟的应对方案,接下来得好好整理下备份恢复的事情了

Oracle DBA高效入职指南的276页-如何快速恢复刚删除的表及其数据,很值得参考

2. 心态可否再稳一些

太久没处理紧急问题,而且这类问题刚好是我的软肋,刚开始确实有些紧张

3. 开发可否再完善一些

失误sql竟然是从系统界面发起的,可想系统的防呆措施有待提升……

目前开发有权限直接操作数据库,是否回收一下呢?我也想,需要人手……

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券