如题,
现在有2个数据库,一个是以前的,一个是最新的。
如何编写一个脚本用来查看这2个数据库之间都有哪些进行了改动?

解决方案 »

  1.   

    如果是单用户只比较表结构
    在一个数据库里建立到另一个数据库的database link,如remote
    SELECT table_name,column_name,data_type,data_length FROM user_tab_columns
    MINUS
    SELECT table_name,column_name,data_type,data_length FROM user_tab_columns@remote;如果不方便建database link,
    在两库分别查询,把结果保存为文本文件,然后用工具比对两文件。
      

  2.   

    现在就是要做个sql脚本出来,通过执行这个脚本就能看到不一样的地方
      

  3.   


    全表比较,所有的字段进行比较select * from t1 a
    where not exists(select 1 from t2 b where nvl(a.c1,0)=nvl(b.c1,0)....)select * from t2 a
    where not exists(select 1 from t1 b where nvl(a.c1,0)=nvl(b.c1,0)....)2个表都没有查询出数据,说明2个表的记录都是一致的
      

  4.   

    现在我想了这样一个方案,比如说我的数据库有10个表,那么我分别进行每一个表都比较一次,这样就写了10个SQL脚本,然后再写个一次执行这10个SQL脚本的SQL脚本,不就相当于比较了数据库了么,不知道想法如何,而且,现在我连比较2个表的方法也没找到,呵呵,希望大家给予帮助,很急,谢谢
      

  5.   

    sql server2000中有这样的方法判断
    checksum_agg,binary_checksum
    但oracle中还没找到合适的
      

  6.   

    只是数据的话
    1、建立DB LINK
    2、选择一个数据库遍历ALL_TABLES得到所有表名。
    3、在循环内使用动态SQL,执行相同2表的MINUS,得到差异并记录到某地。
      

  7.   

    pl/sql developder
    里面有个 compare user object和compare table data
    楼主可以试试