您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页葵花宝典之TIPTOP ERP系统下ORACLE数据误更新恢复方法

葵花宝典之TIPTOP ERP系统下ORACLE数据误更新恢复方法

来源:爱玩科技网


TIPTOP ERP系统下ORACLE数据误更新恢复方法

一. 事件描述:

2017-09-19 下午15:35 左右, 4gl代码中写了一段更新sql,忘记加where条件,并且执行了程序,导致订单单身某些栏位数据全被刷新,

语句如下:

UPDATE oeb_file SET ta_oeb016 = b_oeb.ta_oeb016,

ta_oeb017 = b_oeb.ta_oeb017,

ta_oeb019 = b_oeb.ta_oeb019,

ta_oeb009 = b_oeb.ta_oeb009,

ta_oeb020 = b_oeb.ta_oeb020,

ta_oeb021 = b_oeb.ta_oeb021,

ta_oeb022 = b_oeb.ta_oeb022,

ta_oeb023 = b_oeb.ta_oeb023,

ta_oeb024 = b_oeb.ta_oeb024,

ta_oeb025 = b_oeb.ta_oeb025,

ta_oeb026 = b_oeb.ta_oeb026,

ta_oeb027 = b_oeb.ta_oeb027,

ta_oeb028 = b_oeb.ta_oeb028,

ta_oeb030 = b_oeb.ta_oeb030,

ta_oeb031 = b_oeb.ta_oeb031,

ta_oeb035 = b_oeb.ta_oeb035,

ta_oeb034 = b_oeb.ta_oeb034

二. 解决办法:

步骤一: 通知销售部暂停做单,将整个oeb_file做备份;

步骤二: 2017-09-19之前的数据通过数据库备份还原

1. 切换到oracle用户(一定是oracle用户,因为后续会用到导入命令),一般会是在服务器/u3/backup/目录下(PS: 如果不记得linux下oracle用户的密码,可以通过登陆root账号切换到oracle用户);

2. /u3/backup目录下是一周七天循环的方式备份,找到(2017-09-19)对应的文件夹Tue,查看该文件夹下对应的数据库用户是否有备份资料存在,如果存在使用linux解压命令: gzip -d exp_hs.dmp.gz (hs为oracle用户名,也是tiptop中所谓的运营中心),解压中耐心等待,由于各个公司的数据量不一样,这个时间必须得等,直到解压完成;

3. 在当前目录使用命令: imp system/manager file=exp_hs.dmp fromuser=hs tables=(oeb_file)

(PS: hs为oracle用户,指定导入表oeb_file,这里为了节约时间就没有去创建用户直接导入到system账号下),等待导入完成;

4. 写sql语句,hs用户下oeb_file的更新错的字段按照备份的数据一行一行更新,语法: update hs.oeb_file set … … where exists (select 1 from … … )

步骤三: 2017-09-19 当天的数据通过闪回flashback还原

1. 利用oracle数据库的闪回机制,找到更新之前的当天数据(注意: 这个闪回是有时间的,默认时间不会太久,当然也可以通过设置更改);

2. 写sql查找到更新前最精确的数据,并创建一个表保存起来

select oeb_file.* from oeb_file as of timestamp to_date('2017-09-19 15:27:31', 'yyyy-mm-dd hh24:mi:ss')

LEFT JOIN oea_file ON oea01 = oeb01

where oea02 > to_date ('2017-09-17','YYYY-MM-DD') (ps: 因为今天之前的数据已经通过步骤二更新回来,所以这里关联订单单头表时间) ;

3. 用闪回数据创建的表数据字段更新回oeb_file.

Edit By Kellan (匡匡)

2017年9月20日10:15:30

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务