成长快乐

谈生活,谈工作,开阔视野,提升个人竞争力——挑战自我 && 享受人生。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

介绍个oracle的库表比对工具

Posted on 2008-10-18 00:45  享受人生  阅读(2785)  评论(5)    收藏  举报

我们在实际工作中经常会有后台oracle数据库环境迁移的时候,不知道是否存在问题:
1、开发环境迁移到实际环境中,不知道是否遗漏什么东西?
2、搭建测试环境,不知道与真实的环境是否一致?
3、为用户做数据迁移,从一个库迁移到另一个库中,不知道是否操作完整....

我在网上发现了一个Oracle用户一致性比较的工具,很简单,也很好用,能够将两个库的表、视图、触发器、存储过程、包、同义词等等对象进行比较,然后产生比较报告,会告诉源和目的之间有什么区别(包括对表和视图的数据列进行比较),最绝的是还会产生一个同步操作的SQL文;执行该文件则可以使得目的库和源库达到一致。
希望这个东西对大家在某个时候有用。
    执行文件见附件,是一个DOS程序,在windows的DOS命令窗口下执行。参数信息如下:
-------------------------------------------------------------------------
C:\MYDUL>OCIDIFF
Usage: OCIDIFF [-auto] id=... src=... dst=... srcapp=... dstapp=...
(c) Copyright Lou Fangxin, 2005, all rights reserved.
Option:
     -auto   = automatic sync dest with srouce
       id    = unique report name, for example the logical host name
       src   = user/password@tnsname
       dst   = user/password@tnsname
       srcapp= app user name in source database
       dstapp= app user name in destination database
Notes :
  For table/index/view compare the  existence, column count, name and type,
  but not precision and order (exception for index ), for other objects
  just check the existence. 'MissSrc' or 'MissDst' meas the object does not
  exist, and 'Unmatch' means columns do not match in two database.             
--------------------------------------------------------------------------------
 如果指定-auto则会自动调用exp/imp和sqlplus执行相应命令,否则只给出用于同步的命令, 同时会生成三个文件,文件名取决于ID的值(默认为diff),第一个是ID_rep.txt,这是一份两个用户不同的报告;第二个ID_sql.sql,这是一个SQL文件, 用于同步列,触发器,序列等其他对象;第三个是一个用于exp命令的参数文件,包括了在源数据库中存在, 而在目标数据库中不存在的表的列表,对于这种,使用exp/imp方式来同步. 大家可以检查一下角本, 如果使用-auto选项或手工执行角本,则还会生成四个文件,一个export的dmp文件,一个export的log文件, 一个import的log文件,还有一个调用sqlplus执行的log文件.

下载地址:https://files.cnblogs.com/wertou/oracle比对工具.rar