以前看《EFFECT ORACLE BY DESIGN》老打瞌睡。结果巧了,今天利用这个理论,成功解决了一个实际问题。
用户的软件公司,将源数据库原始表(A)记录和另外一个源数据库表增量数据表(B)的记录经过一定的筛选,导入到到中间数据库(C)中。然后将(C)库的数据通过一个存储过程(作用:去掉重复数据)导入到目标数据库(D)中。
问题:由C库的数据比D数据库的数据多了几千多条记录。用户不相信有这么多重复记录,让我帮忙指导,证明这些记录是否是真的重复数据。
我的思路是:首先检查A库和B库筛选出来的数据插入C库,数据是否一致。经统计:A插入了23346条记录,B库插入的1552条记录。结果到C果然是24898条记录。经过触发器筛选,剩下到D库只有23372条记录。少了1526条记录。首先察看SQL脚本。返现软件公司,从A、B筛选到C有问题,应该基于记录时间查询,而不是受理时间查询。经过调整,结果少了135条记录。在几W条记录里面,找出135条记录,是在不太容易。
通过THOMS的大基准测试理论,将B库的表直接插入到D库中,幸运的是,23346条记录,完全插入到D库中。那么排除B库,只有C库的数据有问题。在1500多找出135条重复的,也不太容易。这个时候,THOMS提出了一套比对函数,可以比对两个表的不同之处。可惜在那样的环境中,做一个比对函数很难。我就考虑使用小基准测试,经过多次筛选,发现从4月13号到4月14号一天插入的28条记录,有8条记录是被从C库直接插入D库被筛选掉的。然后把28条记录导出和D库的20条记录比对,发现是8条记录都是重复数据。然后,又找几个小基准进行测试,最后,过滤掉的数据都是证明是重复数据。
到此,测试成功的证明了20000多条数据,里面100多条数据是重复数据。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8334342/viewspace-442980/ ,如需转载,请注明出处,否则将追究法律责任。