WEB开发网
开发学院数据库Oracle Oracle不同数据库间对比分析脚本 阅读

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

 2006-08-05 11:51:19 来源:WEB开发网   
核心提示: 其实对于普通的数据库开发在某种程度上说根本不需要上面提到的这些工具软件,况且这些产品不是随便可以得到并且使用的,Oracle不同数据库间对比分析脚本(2),针对上面提到的这些问题,提供了两个SQL脚本,然后是需要对比的实例联接名称,这里是ora_zs和ora_sjjk,可以轻松实现对比分析

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

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

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

对象属主(模式): repadmin

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

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

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

附:PL/SQL程序脚本清单: set linesize 80
set verify off
set feedback off
set pause off;
accept obj_owner prompt '对象属主(模式): '
accept inst_1_dblink prompt '第一个实例的数据库联接名称 (包括 @):'
accept inst_2_dblink prompt '第一个实例的数据库联接名称 (包括 @):'
clear breaks
ttitle off
set heading off
column datetime noprint new_value datetime
column inst_code1_name noprint new_value inst_code1_name
column inst_code2_name noprint new_value inst_code2_name
select to_char(sysdate,'MM/DD/YY') datetime from dual
/
select global_name inst_code1_name from global_name&inst_1_dblink
/
select global_name inst_code2_name from global_name&inst_2_dblink
/
set feedback on
set heading on
set newpage 0
ttitle col 25 '对象比较结果报告单' -
col 53 '日期: ' datetime -
skip 1 col 60 '页: ' sql.pno -
skip 1 col 10 '属主: ' obj_owner -
skip 1 center '对象在 &inst_code1_name 但不在 &inst_code2_name ' -
skip 2
column object_type format a15 heading '对象类型';
column object_name format a35 heading '对象名称';
column status format a10 heading '状态';
SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM ALL_OBJECTS&inst_1_dblink
WHERE OWNER = UPPER('&OBJ_OWNER')
AND OBJECT_TYPE != 'SYNONYM'
MINUS
SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM ALL_OBJECTS&inst_2_dblink
WHERE OWNER = UPPER('&OBJ_OWNER')
AND OBJECT_TYPE != 'SYNONYM'
ORDER BY 2,3
/
ttitle col 25 '对象比较结果报告单' -
col 53 '日期: ' datetime -
skip 1 col 60 '页: ' sql.pno -
skip 1 col 10 '属主: ' obj_owner -
skip 1 center '对象在 &inst_code2_name 但不在 &inst_code1_name ' -
skip 2
SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM ALL_OBJECTS&inst_2_dblink
WHERE OWNER = UPPER('&OBJ_OWNER')
AND OBJECT_TYPE != 'SYNONYM'
MINUS
SELECT OBJECT_NAME, OBJECT_TYPE, STATUS
FROM ALL_OBJECTS&inst_1_dblink
WHERE OWNER = UPPER('&OBJ_OWNER')
AND OBJECT_TYPE != 'SYNONYM'
ORDER BY 2,3
/

Tags:Oracle 不同 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接