前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次补数据的经历

记一次补数据的经历

作者头像
小尘哥
发布2018-10-18 10:17:19
5320
发布2018-10-18 10:17:19
举报

最近又发生了丢数据的事情,比较郁闷,解决完问题后,对年前和此次的丢数据的事件做个记录,欢迎大家贡献更好的解决方法。

问题描述

在20171228交易日收市结束后,对2017年历史库hisdb中归档到historysettlement这个schema的增备数据进行了例行检查,经过与生产库DB1的数据比对,发现20170511这个交易日的增量备份数据丢失了。

这个记录了客户成交回报、操作日志的historysettlment下居然没有归档?在DB1中只保留近半年的数据,数据库增备、全备定期删的情况下,....

首先说明一下生产库DB1的备份方式:一周一次数据库全备(expdp导出dmp文件,压缩后大概10G左右),每天收市作业结束后导出DB1增备数据(CSV文件,压缩后大概800M左右),同时DB1增备数据导入至HISDB中。

那如果有20170511那一天的增备问题不是就能解决了?看到一丝曙光,赶紧回去找备份,ε(┬┬﹏┬┬)3 20170511增备已被删除,紧接着的3个星期的全备也被删了,but,找到了DB1 20170602那一天的全备,20170602的全备是DB1截库后( 4月28号截库)包含0511的数据后的全备,现在唯一的方法就是从全备中抽取20170511的数据然后导入到历史库中。

操作之前,确认在20170511到20171228之间historysettlement 下的一些常用表的表结构没有变化,如toperationlog、tbrokeruserevent、ttmdbtrade/ttmdborder、t_marketdata。

操作如下:

1、备份:生产环境hisdb做数据泵全库备份。

2、数据准备:

1)搭建测试数据库(表空间总共分配150G大小,参考DB1的表空间使用率)。

2)导入DB1-20170602全备数据,时间比较久,夜晚进行.......

3)记录导入后的20170511常用表的数据量,便于验证。

4)使用软件供应商提供的每日expdp增备工具抽取20170511的增备数据。

5)将增备数据导入公司另一个DB2(日常和DB1数据实时同步)环境中验证,导入后比对常用表的数据量,结算系统柜台登录信息查询正常。

3、数据恢复:经过验证的增备数据导入生产环境hisdb中,导入语句如下:

impdp system/oracle@ctp1 schemas=historysettlement directory=dumpdir dumpfile=expdp_schema_historysettlement_20170511.dmp tables=historysettlement.t_% content=data_only table_exists_action=append logfile=impdp_schema_historysettlement_20170511.log

impdp system/oracle@ctp1 schemas=report directory=dumpdir dumpfile=expdp_schema_report_20170511.dmp tables=report.t_% content=data_only table_exists_action=append logfile=impdp_schema_report_20170511.log

注意:现在是补充对已有数据的表中进行数据插入,因此这里使用append方式。

4、重建索引(看情况执行):

select 'historysettlement schema' from dual;

    execute dbms_stats.unlock_schema_stats('HISTORYSETTLEMENT');

    execute dbms_stats.gather_schema_stats('HISTORYSETTLEMENT');

    select 'alter index '||t.owner||'.'||t.index_name||' rebuild nologging;' from dba_indexes t where t.owner='HISTORYSETTLEMENT';

5、验证:导入完成后,检查导入log,无异常,hisdb中部分表的数据记录比对一致,前台查询0511历史数据正常。

DB1表空间使用率

部分常用表的数据量

总结:现在数据恢复完成了,数据为什么会丢失一天呢?当前的运维流程中,每天都要进行增备数据归档至历史库,收市作业时间跨度比较长,一般情况下,在19:30夜市开市作业前能完成数据归档工作,特殊情况可能延迟,而下午收市作业的最后一步表数据量比对,在业务繁忙时便被忽略了,造成过了很久才发现数据丢失的情况。

应对办法:在每周的运维流程中,针对historysettlement,加入上周的DB1和HISDB数据比对的情况,对差异较大的表予以关注,并进行维护,运维无小事,还是要靠运维的同事细心啊。

未完待续.............

文章来源:多年运维经验老同学的经历分享

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌与尘埃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档