如何区分两个 Oracle 10g 模式?

Stu*_*ard 14 oracle sql database oracle10g

我觉得两个大型复杂 Oracle 模式之间存在一些差异,它们应该相同,因此决定转储并比较它们以进行调查。我找到了一篇文章(http://www.dba-oracle.com/art_builder_get_schema_syntax.htm),它提供了以下命令来转储表和索引定义。

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
Run Code Online (Sandbox Code Playgroud)

然而,当我转储和比较模式的输出线轴时,几乎每一行都存在微不足道的差异,使差异变得毫无价值。例如,模式名称包含在每个表定义中。

是否有更好的方法来执行此操作,以可以使用 diff 工具轻松比较的格式提供最重要的模式数据。我对表、索引和触发器感兴趣。

我使用的是 Oracle 数据库 10g 企业版 10.2.0.3.0 版

Sua*_*ehi 14

我编写的免费开源SchemaCrawler工具可以满足您的需求。SchemaCrawler 以可区分的纯文本格式(文本、CSV 或 XHTML)输出架构的详细信息(表、视图、过程等)。SchemaCrawler 还可以以相同的纯文本格式输出数据(包括 CLOB 和 BLOB)。您可以使用标准 diff 程序将当前输出与输出的参考版本进行比较。

https://www.SchemaCrawler.com

您将需要为您的数据库提供 JDBC 驱动程序。

  • 后来我意识到常见问题解答说您需要披露您与开源项目的从属关系,而我现在已经开始这样做了。但是,我确实支持我的答案,并认为这是一个值得探索的解决方案。我曾在我过去的两家公司中使用过 SchemaCrawler,两个开发团队都认为它是实现此目的的有用工具。(不,我不是老板。) (2认同)

Bob*_*Bob 6

你不需要任何这些东西。

otn.oracle.com

Oracle 有一个名为 SQL Developer 的免费工具。它有一个架构差异。