比较两个环境, 比如测试A和测试B, 或测试环境和正式环境之间的表结构差异, 是件很麻烦的事, 如果有成千上百的表, 可能会相当地耗时, 花个一两天也是有的. 正是因为不想花这么长的时间去做麻烦的事, 就偷懒地写了ocidiff这个表结构比较和自动同步程序.
一位51job的DBA朋友正好面临同样的问题, 我就推荐了这个程序给他. 早上正式使用后, 回馈说程序运行相当的快速和准确, 几分钟内完成手工几个小时才能完成的事, 并给出可读性很好很清晰的比较报告, 因此决定作为正式工具在公司内部使用, 以大大的减少了DBA在这类琐事上无谓的时间消耗. 每年年初他们网站的流都要上升个几倍, 因此需要花更多的时间面对负荷的上升, 就不能花太多的时间在手工比较表结构这种事上面. 这个角本再加上良好的SQL编写习惯, 可以防止某些低级错误.
这个工具是命令行的OCI程序, 做成命令行是为了更适合在OS上进行作业调度, 这一点虽不为大众所喜欢, 但却是很实用的. 这是一个三年前开发的工具, 已经成熟稳重了, 并且和人工处理相比, 它的结果更加准确. ocidiff是点对点的比较, 另一个工具(Compare Any Column)则可以进行多点之间的比较, 比较方式更加灵活.
作为一个很偷懒的DBA, 有好几个用来偷懒的角本. 不偷懒的DBA不是好DBA, 不是指不做事的, 是指在做事中相办法偷时间的.
留言 (6)
看看这篇,提到你的AUL了
http://www.oracle-internals.com/?p=17
Posted by kamus | Mar 4, 2008 3:55 PM
偷懒也是一种进步的方式!
Posted by fire9 | Mar 4, 2008 4:02 PM
我一般都是使用toad或者pl/sql developer,不过,是D版地:(
Posted by big_bear | Mar 4, 2008 4:06 PM
从没有用过Toad来比较两个用户下的表结构异同,它生成的报告是如何的?
Posted by anysql | Mar 4, 2008 7:21 PM
写个shell角本,采用sdiff来比较,非常方便!
Posted by logzgh | Mar 5, 2008 2:42 PM
logzgh, 建议先试用一下ocidiff后在评论sdiff的方便性。
Posted by anysql | Mar 5, 2008 11:41 PM