PL/SQL DEVELOPER 6对象比较功能说明(原创)
PL/SQL DEVELOPER 6的对象比较功能非常强大与实用,对于开发人员来说是一个必备的工具,主要有以下用途:
检查两个不同数据库间某个用户下所有对象的不同信息
自动生成用来匹配的SQL脚本
常用于开发html" class="superseo">数据库与生成数据库对比或者新版数据库与旧数据库
下面我将全面介绍PL/SQL DEVELOPER 6对象比较功能的操作步骤:
1、打开窗口
打开Tools/Compare User Objects…菜单,比较窗口显示如下:
中间主区域显示的是当前登录用户下的所有对象,包括表、视图、包、函数、过程、触发器、序列等等,这些都是可以比较的对象。
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1026" style="WIDTH: 415.5pt; HEIGHT: 300pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>
2、从列表中选择你要比较的对象,如上图所示,可以通过ctrl或者shift键多选。
3、设置目标数据库对象
点击下方的Target Session..按钮,将弹出连接对话框如下图所示
<shape id="_x0000_i1027" style="WIDTH: 222.75pt; HEIGHT: 150pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.png"></imagedata></shape>
输入目标数据库的用户名、密码、服务名,注意用户名必需是含用要比较对象的用户
4、开始比较
输入完目标对象的连接后,点击右下方的Compare按钮即开始进行对比。
在对比时有一个选项,默认为选择
Include storage in generated DDL for new objects
如果不选中的话将在产生的脚本中不包括对象的存储信息(如表空间信息等等)
<shape id="_x0000_i1028" style="WIDTH: 415.5pt; HEIGHT: 300pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image005.png"></imagedata></shape>
完成后会自动显示对象间的不同信息如下图所示,如果对比的对象DDL语句完全相同则不会显示列表。
<shape id="_x0000_i1029" style="WIDTH: 415.5pt; HEIGHT: 300pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image007.png"></imagedata></shape>
5、查看对象间的具体不同信息
通过比较显示了不同对象的列表后,可以选择你要查看的对象具体不同定义,同样支持多选,在下方将对应显示当前数据库用户下的对象要应用到目标数据库对象的脚本。
注:主要有以下几种情况会产生应用脚本
编号 | 情况 | 生成的脚本 | 实例 |
1 | 目标对象不存在 | 生成创建目标对象的全部脚本 | 表不存在 |
2 | 目标对象不同 | 生成修改脚本 | 表的字段大小不同 |
3 | 目标对象有但当前对象不存在 | 无任何提示 | |
4 | 函数、过程、包体、触发器、视图对象定义不同 | 生成重新替换对象的脚本 | 函数定义不同 |
6、其它操作
对比后可以根据个人要求进行相应的操作
<shape id="_x0000_s1026" style="WIDTH: 98.25pt; HEIGHT: 20.25pt; mso-position-horizontal-relative: char; mso-position-vertical-relative: line" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image009.gif"></imagedata><wrap type="none"></wrap><anchorlock></anchorlock></shape>
1. 保存脚本成文件
2. 复制脚本到windows剪贴板
3. 应用脚本到目标数据库(进行此操作需比较小心,建议在全面检查对比产生的脚本后才能进行此项操作,特别是一些删除操作,因为这个操作是批量应用的,没有确认提示。)
4. 显示具体的不同信息(功能非常强大,这是PL/SQL DEVELOPER借助第三方工具扩展的功能,当前版本用的工具是ExamDiff1.6版)
<shape id="_x0000_i1030" style="WIDTH: 415.5pt; HEIGHT: 300pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image010.png"></imagedata></shape>
当前ExamDiff1.6版在对比方面功能一般,不过还是可以了,就是对汉字不太兼容,如果你有ExamDiff3.2 或3.3的版本,只要通过配置对比工具将它指向你的对比工具就可以了,显示的效果更好。关于对比工具的操作,我不做详细的介绍。
5. 配置对比工具(根据个人要求定义自己的对比工具)
<shape id="_x0000_i1031" style="WIDTH: 384pt; HEIGHT: 252.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image012.png"></imagedata></shape>
<chsdate w:st="on" year="2005" month="3" day="20" islunardate="False" isrocdate="False"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">2005-03-20</span></chsdate>
叶正盛