![如何比较两个 Oracle 10g 模式的差异?](https://linux22.com/image/485490/%E5%A6%82%E4%BD%95%E6%AF%94%E8%BE%83%E4%B8%A4%E4%B8%AA%20Oracle%2010g%20%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%B7%AE%E5%BC%82%EF%BC%9F.png)
我感觉两个应该相同的大型复杂 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)。您可以使用标准区分程序将当前输出与输出的参考版本进行区分。
您需要为您的数据库提供一个 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 数据库模式。这在确保您的开发实例与生产实例相同时非常有用;尤其是在实施前端更改时。