Oracle不同数据库间对比分析脚本

来源:asp之家 时间:2010-07-26 13:24:00 

Oracle数据库开发应用中经常对数据库管理员有这样的需求,对比两个不同实例间某模式下对象的差异或者对比两个不同实例某模式下表定义的差异性,这在涉及到数据库软件的开发应用中是经常遇到的。一般数据库软件的开发都是首先在开发数据库上进行,开发到一定程度后,系统投入运行,此时软件处于维护阶段。针对在系统运行中遇到的错误、bug等,还有应用系统的升级,经常需要调整后台程序,数据库开发人员经常遇到这样一种尴尬的事情,维护到一定时期,开发库和运行库之间出现了一些差异,而这些差异又是什么。还有一种情况就是如果应用在很多地方同时使用,每次的后台升级,那些数据库作了升级,那些还没有作升级,如果没有详细记录的话,也会造成我们的尴尬事情。

  另外,如果要搭建Oracle的高级表复制环境,在规划好了复制的架构以及复制的表后,在正式将需要复制的表加入到复制组之前,一个重要工作就是检查这些需要复制的表在主节点和主定义节点间的差异性。如果这些表定义间存在任何细微的差别,如某个字段在一个节点是允许Null,而在另一个节点是Not Null,在将表加入到复制组时都会出现这样的错误,“ORA-23309 object string.string of type string exists”,其实造成这个错误的原因就是复制主定义节点和主节点之间表的定义存在某些差异,系统认为是两个不同的表,但是在两个数据库中具有同样的名称。如果需要复制的表很多,手工对比两个节点复制表之间的差异是需要很大工作量,而且不一定准确。

  业界有名的数据库软件辅助产品提供商美国Embarcadero公司(www.embarcadero.com)在其全套数据库解决方案中就相应提供了一个叫Change Manager的产品,该产品一个很大的用途就是对比分析不同实例间的差异。Oracle公司的OEM(oracle enterprise manager)包中也相应提供了一个工具叫做DB-Diff,也用来比较两个数据库间的差异。

  其实对于普通的数据库开发在某种程度上说根本不需要上面提到的这些工具软件,况且这些产品不是随便可以得到并且使用的。针对上面提到的这些问题,提供了两个SQL脚本,可以轻松实现对比分析两个不同数据库实例间对象的差异以及表定义的差异。

  一、对比两个不同实例下某模式中对象差异

  在运行下面的脚本之前,必须首先创建当然数据库用户和需要对比的两个实例间的数据库联接。下面是运行该脚本的一个例子。在SQL/PLUS下运行该脚本,系统出现如下提示:

  对象属主(模式): repadmin

  第一个实例的数据库联接名称 (包括 @):@ora_zs

  第一个实例的数据库联接名称 (包括 @):@ora_sjjk




其中程序要求输入对象属主,也就是对比那个用户,这里是repadmin用户。然后是需要对比的实例联接名称,这里是ora_zs和ora_sjjk,最后给出对比报告。

  附:PL/SQL程序脚本清单:

二、对比两个不同模式下表定义的差异

  运行方法和前面第一个脚本一样,这里不再详述。下面是一个运行实例结果:

  对象属主(模式): db_zgxt

  第一个实例的数据库联接名称 (包括 @):@ora_cx

  第一个实例的数据库联接名称 (包括 @):@ora_zs

标签:oracle,数据库
0
投稿

猜你喜欢

  • Python线程创建和终止实例代码

    2022-06-29 11:01:34
  • Go 在 MongoDB 中常用查询与修改的操作

    2024-04-26 17:18:04
  • Python字典创建 遍历 添加等实用基础操作技巧

    2021-05-23 22:22:31
  • MySQL的一级防范检查列表

    2011-12-14 18:39:22
  • Mysql视图和触发器使用过程

    2024-01-15 22:15:46
  • python os.system执行cmd指令代码详解

    2022-04-04 07:36:21
  • pytorch加载预训练模型与自己模型不匹配的解决方案

    2023-06-17 14:22:24
  • Python Cloudinary实现图像和视频上传详解

    2022-03-13 05:21:13
  • XML 在使用中产生的二十个热点问题

    2008-05-29 11:07:00
  • Python Numpy教程之排序,搜索和计数详解

    2021-10-31 05:30:21
  • 用javascript连接access数据库的方法

    2024-01-15 11:11:51
  • vue解决跨域问题的几种常用方法(CORS)

    2024-04-28 09:32:42
  • Xml_javascript分页

    2008-09-04 14:43:00
  • Oracle相关组件版本信息的介绍

    2023-07-14 09:19:53
  • Go语言使用Gob传输数据

    2023-08-06 05:12:28
  • phpmyadmin 数据导入导出问题

    2007-08-06 15:23:00
  • Python实现比较两个文件夹中代码变化的方法

    2022-04-07 23:16:08
  • phpMyAdmin 2.10.2 配置方法

    2007-08-22 08:11:00
  • MATLAB中text函数使用的语法与示例代码

    2022-09-29 00:21:38
  • Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例

    2023-07-29 00:03:51
  • asp之家 网络编程 m.aspxhome.com