1、 compare user objects
1) 适用场景:当A数据库进行变更以后,需要对B数据库进行同样的变更或者是要对其它环境(例如测试环境)下的数据库进行同步变更,可以使用此功能,来生成可执行的SQL语句。
2) 使用说明:
Ø 点击tools-compare user objects按钮,可以打开如下窗口:
针对上述页面的说明如下:
selection tab页:选择想要进行比较的对象,如果不选择,则默认比较全部对象;
options tab页:
include storage in generated DDL for new
objects:在此处可以设定,本次比较,是否要包含一些存储信息,比如表空间名称,初始化大小等,但是,这些信息,在不同的数据库中可能会不一致,因此,比对结果,有可能会不适用。
target schema:如果目标数据库中的比对对象,是由其它用户所拥有的(不是所连接的目标用户),则可以在此处设置目标数据库模式。
differences tab页:此处,会显示比对结果。
target session按钮:在此处设置要比对的目标数据库(需要升级的数据库),输入用户名和密码进行连接。
Ø 设置好selection和options tab页,并连接好目标数据库后,可以点击compare按钮,执行比对操作。
Ø 比对结束后,打开differences tab页,查看比对结果:
如果比对之前,选择了部分对象,则仅显示选中对象的比对结果,如果未选择对象,则默认显示全部对象的比对结果。
此处显示的SQL,需要在target session中设定的数据库中进行执行,可以直接点击apply按钮,执行SQL,也可以点击保存按钮,将结果保存,或者点击复制按钮,将结果进行复制。
2、 compare table data
1) 适用场景:A数据库下的一个或几个表进行了更新、插入或删除数据的操作,若B数据库针对相同的数据表,需要进行相同的数据操作,此时,可以使用此功能。
2) 使用说明:
Ø 点击tools-compare user objects按钮,可以打开如下窗口:
针对上述页面的说明如下:
selection tab页:选择想要进行比较的表,如果不选择,则默认比较全部对象;
options tab页:
Actions区域:在此处可以设定,本次比较,要包含哪些操作,例如:如果仅选中了插入和更新选项,则最终的比较结果中,不会包含删除操作。
commit every N records:用于控制提交的频率,如果此处填写0的话,则结束的时候仅提交一次。
mode:如果选择“generate script”,则比较结束后,可以保存比较结果,并且单独在command窗口或sql *plus中执行;如果选择“update database”,则比较结束后,会直接在目标数据库,对数据表进行数据操作(直接执行所生成的SQL语句)。
target schema:如果需要进行比较的数据表,拥有者不是target session所连接的数据库,而是其它模式的用户,可以在此处指定真正拥有者用户,并确保对用户有相应的操作权限。
target schema:如果目标数据库中的比对对象,是由其它用户所拥有的(不是所连接的目标用户),则可以在此处设置目标数据库模式。
include owner in SQL:在SQL中保存数据库用户名,此选项,只在脚本模式(generate script)下起作用,选中此选项后,可以保证,当保存的脚本在其它用户下执行时,仍然能修改指定用户的指定表数据。
differences tab页:此处,会显示比对结果。
target session按钮:在此处设置要比对的目标数据库(需要升级的数据库),输入用户名和密码进行连接。
Ø 设置好selection和options tab页,并连接好目标数据库后,可以点击compare按钮,执行比对操作。
Ø 比对结束后,打开differences tab页,查看比对结果:
如果选择的是“update
database”,则此处仅显示每个表插入、更新、删除的记录条数;
如果选择的是“generate
script”,则此处会显示具体的SQL操作语句,可以对这个结果进行保存或复制操作。
3、 使用技巧
1) compare user objects:比较的是数据结构,最终比对结果,不包含数据记录的变化;
2) compare table data:比较的是数据表的数据记录变化情况,比较的前提,数据表在两个数据库中同时存在。
3) 若要实现如下功能:将B数据库中的某些表,导入到A数据库,包括表结构和表的数据记录,除了使用导入导出功能外,还可以将上述两个功能结合使用:
首先,使用compare user objects工具,在A数据库中建立需要的数据表;
然后,使用compare table data工具,将数据表记录,更新到A数据库即可。