当前位置:文档之家› Oracle数据库比较工具.02.第一个场景,在线比对数据库结构

Oracle数据库比较工具.02.第一个场景,在线比对数据库结构

Oracle数据库比较工具02:第一个场景,在线比对数据库结构
本文是Oracle数据库比较工具系列介绍说明的第二篇。

一般来说,我们通常的软件开发运行环境有这样三大类:开发环境,测试环境,生产(部署)环境。

由于软件开发模型(Software Development Model)的不同,这三类环境之间进行交互的活动和任务会存在不同。

比较典型的开发模型有:1. 瀑布模型(Waterfall Model);
2. 快速原型模型(Rapid Prototype Model);
3. 增量/渐进/迭代模型(Incremental Model);
4.螺旋模型(Spiral Model);
5.演化模型(evolution model);
6.喷泉模型(fountain model)等。

上述几种开发模型的应用非常普遍。

除了基本不可实际操作的瀑布模型,其他几种开发模型的基本特性决定了:在软件定义、开发、发布、维护的阶段,通常会出现开发环境、测试环境、生产环境共存的局面;不同的环境,需要有一致的源码和数据结构。

——这就是我们为什么总要想办法去解决数据库结构同步的根本原因。

下面的图,假设了一个最常见的局面:开发环境按照增量包有节奏的完成分析、设计、编码工作;测试环境按照开发环境的提交,完成功能的验证和测试,并确定可以交付的可操作产品;生产环境在确保不影响已部署应用稳定性和数据可靠性的基础上,按照研发交付,向用户逐步提交并展示产品。

现在,假设他们都在使用Oracle数据库,我们开始描述工作的场景。

第一个场景:每完成一个迭代,开发环境需要把新的应用打包交付给测试人员,并提供新的数据库结构。

应用必须是整体打包交付的,这毋庸置疑(这里的理论分析参见本博客的“测试管理与测试技术”部分);数据库结构则通常需要增量提供——测试环境已经构建的测试数据多数情况下必须予以保留,以提高工作效率。

如果开发环境和测试环境处于同一个网络,则可以使用Oracle数据库比较工具的“源库在线比对目标库”。

操作如下:
展开“源库在线比对目标库”,并点击“配置源库与目标库连接”,显示数据库连接配置页面如下图。

输入用户、密码、连接参数后,点击“测试...”按钮,可以测试连接数据库(不需在本地配置数据库连接,直接通过IP和端口以及相应的数据库服务名进行连接)。

已经连接成功的参数会被自动记录,并按照连接参数进行分组在列表中显示,下次可以直接点击该行就引入相关参数。

源库和目标库都测试通过后,点击“下一步”按钮,自动加载源库的全部数据库对象,如下图所示。

目前支持表、索引、视图、存储过程、函数、同义词、包头、包体、触发器、类型、序列等十一种类型。

注意,索引和序列是默认不自动勾选的,即默认不参与比对。

展开对象的树形结构,可以看到对象的具体内容。

需要注意的是,视图、存储过程、函数、同义词、包头、包体、触发器等有可能存在失效的情况(用红色图标标出),可以使用“数据库辅助工具”中的“删除或重新编译”功能对失效对象进行重新编译后(使用说明参见后续文档)再进行比对。

勾选需要比对的对象后,点击下一步,即开始数据对象结构的比对,参见下图:
比对完成后,显示对象结构的差异。

对于目标库中不存在的对象,点击该节点后,可以看到对象创建的脚本语句;对于存在差异的对象(紫色图标标出),点击节点,可以看到更改差异的脚本语句。

参见下图:
另外,对存在差异的对象,还可以通过点击“脚本比较”按钮,或者直接在有差异的对象节点双击,弹出对象脚本比较窗口,在该对象窗口里,可以看到脚本语句差异的具体内容。

如下图:
勾选准备导入的对象,点击“生成脚本文件”,可以自动生成勾选对象的同步脚本;也可以直接点击“执行到目标数据库”,把自从生成的同步脚本执行到目标库中。

如下图,直接点击“执行到目标数据库”。

执行成功后,待导入对象的图标会变成绿色,如下图:
下一篇文章,我们将描述物理断开的开发环境和生产环境,如何通过这个工具,完成数据库结构同步工作。

相关主题