首先在数据库中建两个用户: DBDIFF1和DBDIFF2. 并在DBDIFF1上运行下面的角本:

-- run under user dbdiff1
CREATE TABLE T_DBDIFF1 ( COL1 NUMBER(10), COL2 NUMBER(20));
CREATE TABLE T_DBDIFF2 ( COL1 NUMBER(10) );
CREATE TABLE T_DBDIFF3 ( COL1 NUMBER(10) );

    在DBDIFF2用户下运行以下角本:

-- run under user dbdiff2
CREATE TABLE T_DBDIFF1 ( COL1 NUMBER(10), COL2 NUMBER(20));
CREATE TABLE T_DBDIFF2 ( COL2 NUMBER(10) );
CREATE TABLE T_DBDIFF4 ( COL1 NUMBER(10) );

    然后就可以用ocidiff程序来将DBDIFF1的表结构同步到DBDIFF2用户中, 我们可以看出要做的事情有, 为DBDIFF2下的T_DBDIFF2表加上COL1字段, 并将T_DBDIFF3这个表创建起来. 如下所示:

C:\MYDUL>ocidiff src=dbdiff1/dbdiff dst=dbdiff2/dbdiff
OCIDIFF -- Run the following command to sync dest database:
sqlplus dbdiff2/dbdiff @diff_sql.sql

C:\MYDUL>cat diff_sql.sql
spool diff_sql.log
alter session set sort_area_size=104857600;
alter session set db_file_multiblock_read_count=128;
set define off echo on
ALTER TABLE T_DBDIFF2 ADD COL1 NUMBER(10);
CREATE TABLE "T_DBDIFF3" ("COL1" NUMBER(10, 0))
  STORAGE ( FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) ;

spool off
exit

    ocidiff用exp和imp来获得建表的语法的, 因此要确保运行ocidiff的机器上的exp程序能连接到src指定的数据库进行导出, 除了自动生成修复角本外, 还给出了一个比较报告:

C:\MYDUL>cat diff_rep.txt
Database Object Comparation Report
========================================================
SOURCE=dbdiff1/dbdiff
DEST  =dbdiff2/dbdiff
========================================================

Comparing TABLE difference ...
TABLE_NAME                 Source       Dest
---------------------      -------    -------
T_DBDIFF2                  Unmatch    Unmatch

    COLUMN_NAME                  SRC_DATA_TYPE      DST_DATA_TYPE
    ---------------------   ------------------ ------------------
    COL1                            NUMBER(10)
    COL2                                               NUMBER(10)

TABLE_NAME                  Source       Dest
---------------------      -------    -------
T_DBDIFF3                             MissDst
T_DBDIFF4                  MissSrc

========================================================
Report Finished. Thanks!
========================================================

    并不限定于两个用户在同一个数据库上, 如果有用你就用吧! 如果指定-auto在命令行, 则会自动运行"sqlplus dbdiff2/dbdiff @diff_sql.sql"来进行表结构同步.