ocidiff是一个同步表结构(DBDiff)的程序, 今天所作的主要改进有两个方面. 第一个是类型(Type)/存贮过程(Procedure)/函数(Function)/包(Package)/视图(View)这些对象的刷新机制, 当发现目标数据库这些对象的LAST_DDL_TIME比源数据库的要旧的话, 就会从从源端取出重建代码进行创建(Create or Replace), 对于触发器, 将会在明后天作出相应的更改.
第二个改进是增加了一个命令行参数mask(默认值1, 保留比较报告), 主要用于控制是否自动删除用到的监时文件, 以用于调试, 在ocidiff工作时, 会生成以下文件:
1, diff_rep.txt, 比较报告文件, 当mask的第一位不是1时就删除
2, diff_sql.txt, 最终同步的SQL文件, 不受mask控制, 始终保留
3, diff_sql.log, 自动运行sql文件同步生成的log文件, 不受mask控制
4, diff_exp.txt, 导出的参数文件, mask第二位不是1时就删除
5, diff_dmp.dmp, 导出(exp)文件, Oracle dump格式, 当mask第3位不是1时删除
6, diff_idx.sql, 导入(imp)的日志文件, 当mask的第4位不是1时删除
mask是用Bit位来控制各个的, 如果全部生成的话, 指定mask值为15(0x01+0x02+0x04+0x08), 这样的指定方法, 有些不合我们的习惯吧.
留言 (2)
你这里怎么保证同步过程的顺利执行?比如在同步表结构的时候,目标数据库的表上有TX锁;又比如在同步procedure的时候,目标数据库上该procedure正在执行?
你这边的容错机制是什么?
Posted by allantrey | Jun 29, 2007 6:05 PM
没有考虑这么复杂的问题.
Posted by anysql | Jun 30, 2007 12:36 PM