比较 SQL Server 数据库模式与 Oracle 数据库模式

Posted

技术标签:

【中文标题】比较 SQL Server 数据库模式与 Oracle 数据库模式【英文标题】:Compare SQL Server Database Schema with Oracle Database Schema 【发布时间】:2015-04-08 06:24:47 【问题描述】:

在我的开发环境中,我们支持 MSSQL Server 和 Oracle 上的应用程序。这两个 RDBMS 的数据库模式是相同的。

在开发过程中,我们发现开发人员犯了一个错误,忘记更改过去 1 年的 oracle 数据库。因此,oracle 脚本在 SQL Server 模式脚本的模式方面相当落后。

现在的问题是如何比较两个 RDBMS 系统以找出差异并更新 oracle 脚本

【问题讨论】:

比较您的源代码版本控制中的脚本。 @LalitKumarB 两个数据库的脚本顺序都不正确。意味着一些对象在一个脚本的顶部,而相同的对象在脚本的底部。所以只是文本比较是不可能的 我没有说您需要进行文本比较。从您的源代码管理中,您可以轻松找到架构中的更改时间和内容。您需要跟踪所有更改并创建一个包含所有错过更改列表的脚本。 【参考方案1】:

如果没有跟踪日志可以找到并重现自第一次检测到与 Oracle 版本不一致或应用了更改但只是部分更改后应用于 SQL Server 的所有更改,您确实需要比较两者中出现的对象数据库。 在这种情况下,在任意一侧的数据库之间建立链接,并使用系统字典视图来比较表结构和其他对象以发现差异,并可能为 Oracle 方案汇总生成脚本。

如果你想从 MS SQL Server 端操作:

    Install and configure Oracle Instant Client Install Oracle ODAC Follow Microsoft recomendations (64-bit version) 以任何具有dba 角色(或使用对象所在的相同 Oracle 模式)的用户身份从 MS SQL 数据库连接到 Oracle

如果你想从 Oracle 服务器端进行操作:

    安装和配置Oracle Database Gateway for SQL Server。

    Create database link to MS SQL Server.

配置成功后,您可以加入 SQL Server 端的Information schema views 和 Oracle 端的Data dictionary views 以找出差异。

当然,像different data types 这样的方式有很多麻烦,但它提供了至少部分工作自动化的机会。

【讨论】:

以上是关于比较 SQL Server 数据库模式与 Oracle 数据库模式的主要内容,如果未能解决你的问题,请参考以下文章

sql server和my sql 命令(语句)的区别,sql server与mysql的比较

SQL Server,HQL:如何将 SQL Server 日期时间列字段与日期进行比较

比较MySQL 与SQL server

那些年我们踩过的坑,SQL 中的空值陷阱!

sql server 备份与恢复系列三 简单恢复模式下的备份与还原

比较 SQL 数据