如何比较两个 Oracle 10g 模式的差异?

如何比较两个 Oracle 10g 模式的差异?

我感觉两个应该相同的大型复杂 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;

然而,当我转储并比较输出模式的差异时,几乎每一行都有细微的差异,使得差异毫无意义。例如,模式名称包含在每个表定义中。

有没有更好的方法可以做到这一点,以可以使用 diff 工具轻松比较的格式提供最重要的架构数据。我对表、索引和触发器感兴趣。

我正在使用 Oracle Database 10g Enterprise Edition 版本 10.2.0.3.0

答案1

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

https://www.SchemaCrawler.com

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

答案2

你不需要这些东西。

oracle.com

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

答案3

你可以使用蟾蜍 是一款出色的 Oracle 开发通用工具。有一个试用版可供测试。功能列表如下:

  • 数据比较和同步向导
  • 跨数据库平台同步数据

您可以测试的另一种产品是奥拉动力工具

OraPowerTools 是一套原生 Oracle 数据库实用程序。该套件包括 OraEdit PRO(完整的 Oracle 开发环境)、DBDiff for Oracle(比较和升级任意 2 个 Oracle 数据库)和 DBScripter for Oracle(根据 Oracle 数据库的对象和/或数据创建 SQL 脚本)。

作为免费替代方案,你可以查看此 CodeProject 文章:Oracle 架构比较工具

这个小型 VB.NET 应用程序允许您比较 Oracle 数据库模式。这在确保您的开发实例与生产实例相同时非常有用;尤其是在实施前端更改时。

11http://www.toadsoft.com/toad_oracle.htm

答案4

如果你能运行 Perl,你可以看看SQL仙子,它应该能够生成 SQL 形式的架构转储。然后,您可以使用标准文本差异工具。还有一个工具这将采用两个模式并生成 ALTER 命令以使它们相同。

相关内容