一个复杂系统往往会有几套开发测试环境,对于开发DBA或测试环境DBA来讲,维护这些环境之间的同步是一个比较烦琐的事情。在2005年时,曾和当时的三个同事,花了足足三天时间来手工同步两个环境的表结构差异,最后促使我去开发一个表结构自动同步工具,现在是对那个工具的进一步升级。

– GetDDL: DDL Script Generator for Oracle, Release 3.0.1
– (@) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.
– Oracle Data Recovery, System Tuning and Monitoring and Tuning Service

Usage: ocidiff fromuser=… touser=… file=…

Options:
  fromuser  — Source Connection String
  fromschema — Source Schema to Switch
  touser    — Destination Connection String
  toschema  — Destination Schema to Swith
  tstab      — Tablespace for Tables
  tsind      — Tablespace for Indexes
  sync      — Sync List (ALL,SEQUENCE,TABLE,INDEX,VIEW,SOURCE,COMMENT)
  file      — Output Script File Name
  log        — SQL*Plus Spool log file name
  auto      — Automaticall call SQL*Plus to sync(YES)

    上面的命令行选项,对于DBA来讲应当都比较容易理解,就不一个一个讲了。File和Log选项有一些特殊的设置,指定文件名时可以用%Y来表示年份,用%M来表示月份,同理用%D来表示日期,以便给自动同步工具留下足够的运行日志。

ocidiff …… file=scott_%%y%%m%%d.sql log=scott_%%y%%m%%d.log …

    运行时加上”AUTO=YES”选项,会自动调用SQL*Plus连接到远程库上执行,执行后会留带日期的SQL和日志文件。

D:\ocidiff>dir /b scott_*
scott_20110419.log
scott_20110419.sql

    对于生成的自动同步SQL的脚本准确性,还需要进行大量的测试及进一步的改进,下载试试吧。