如何通过更改表而不删除并重新创建它来比较两个Oracle模式以获取增量更改

时间:2013-09-19 12:00:25

标签: oracle schema redgate

我已经尝试过一个名为TOYS的工具。我发现它是免费的,但不幸的是它没有用。

然后,我尝试了“RED-Gate Schema Compare for Oracle”,但它使用该技术删除并重新创建表平均值,而我需要使用新添加/删除的列来更改表。

非常感谢任何帮助

由于

1 个答案:

答案 0 :(得分:3)

从Oracle 11g开始,您可以使用dbms_metadata_diff包和特定compare_alter()函数来比较两个模式对象的元数据:

 Schema #1 HR

 create table tb_test(
    col number
  )


 Schema #2 HR2

  create table tb_test(
    col_1 number
  )


 select dbms_metadata_diff.compare_alter( 'TABLE'    -- schema object type
                                        , 'TB_TEST'  -- object name
                                        , 'TB_TEST'  -- object name
                                        , 'HR'       -- by default current schema
                                        , 'HR2'
                                        ) as res
  from dual;

结果:

RES                                                                            
-------------------------------------------------
ALTER TABLE "HR"."TB_TEST" ADD ("COL_1" NUMBER);
ALTER TABLE "HR"."TB_TEST" DROP ("COL");