Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: schema comparisons on different databases
This is a multi-part message in MIME format.
------=_NextPart_000_003B_01C05019.E4DBFA00 Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Here is one home made script. I don't think it is perfect but you can change it:
Djordje
----- Original Message -----
From: <nlzanen1_at_ey.nl>
To: Multiple recipients of list ORACLE-L <ORACLE-L_at_fatcity.com>
Sent: Thursday, November 16, 2000 10:36 AM
Subject: schema comparisons on different databases
>
>
> Hi All,
>
> Hit me with shameless plugs here.
>
>
> Anybody know of any tool/utility etc that will compare schema A on
instance
> A with Schema A on instance B.
> Down to the nitty gritty details.
> I Like all options
>
>
> TIA
>
>
> Jack
>
> ===================================================================
> De informatie verzonden met dit E-mail bericht is uitsluitend bestemd voor
> de geadresseerde. Gebruik van deze informatie door anderen dan de
> geadresseerde is verboden. Openbaarmaking, vermenigvuldiging, verspreiding
> en/of verstrekking van deze informatie aan derden is niet toegestaan.
> Ernst & Young staat niet in voor de juiste en volledige overbrenging van
de
> inhoud van een verzonden E-mail, noch voor tijdige ontvangst daarvan.
> ===================================================================
> The information contained in this communication is confidential and may be
> legally privileged. It is intended solely for the use of the individual or
> entity to whom it is addressed and others authorised to receive it. If you
> are not the intended recipient you are hereby notified that any
disclosure,
> copying, distribution or taking any action in reliance on the contents of
> this information is strictly prohibited and may be unlawful. Ernst &
> Young is neither liable for the proper and complete transmission of the
> information contained in this communication nor for any delay in its
> receipt.
> ===================================================================
>
>
>
>
>
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.com
> --
> Author:
> INET: nlzanen1_at_ey.nl
>
> Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
> San Diego, California -- Public Internet access / Mailing Lists
> --------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from). You may
> also send the HELP command for other information (like subscribing).
------=_NextPart_000_003B_01C05019.E4DBFA00 Content-Type: application/octet-stream;
name="CompareDB.sql"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="CompareDB.sql"
-- -- cmpprdv.sql -- -- Script that compares two databases and finds all the differences -- for given users: -- Objects existing in one but not in the other database -- Objects with different definition -- -- The script should be run by SYSTEM from the db1 side set trimspool on set pagesize 1000 spool ZZZZZ set feedback off set heading off select 'Differences between prod and dvlp on '|| TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI') from dual / set heading on set feedback on drop database link db2.domain / create database link db2.domain connect to system identified by syspas using 'db2' / set pagesize 1000 set linesize 120 col ord noprint col usr noprint col loc noprint col diff heading "db1 - db2 differences" select '1' ord , owner usr , '2' loc , RTRIM(SUBSTR(OWNER, 1, 10)) || ' owns on prod ' || RPAD(SUBSTR( DECODE(OBJECT_TYPE, 'DATABASE LINK', 'DB LINK', 'PACKAGE BODY', 'PCKG BODY', OBJECT_TYPE), 1, 10),10) || ' ' || RPAD(RTRIM(SUBSTR(OBJECT_NAME, 1, 30)),20) || ' created ' || TO_CHAR(CREATED) diff from dba_objects o where OBJECT_TYPE || OBJECT_NAME not in ( select OBJECT_TYPE || OBJECT_NAME from dba_objects_at_db2.domain ro where ro.owner =3D o.owner ) and owner in ('SCHEMA_NAME') UNION select '1' ord , owner usr , '1' loc , RTRIM(SUBSTR(OWNER, 1, 10)) || ' owns on dvlp ' || RPAD(SUBSTR( DECODE(OBJECT_TYPE, 'DATABASE LINK', 'DB LINK', 'PACKAGE BODY', 'PCKG BODY', OBJECT_TYPE), 1, 10),10) || ' ' || RPAD(RTRIM(SUBSTR(OBJECT_NAME, 1, 30)),20) || ' created ' || TO_CHAR(CREATED) diff from dba_objects_at_db2.domain ro where OBJECT_TYPE || OBJECT_NAME not in ( select OBJECT_TYPE || OBJECT_NAME from dba_objects o where ro.owner =3D o.owner ) and owner in ('SCHEMA_NAME') UNION select '2' ord , tc.owner usr , '1' loc , RTRIM(SUBSTR(tc.OWNER, 1, 10)) || ' table ' || tc.TABLE_NAME || ' on prod no col ' || RTRIM(tc.COLUMN_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_tab_columns tc , dba_objects o where tc.owner =3D o.owner and tc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and exists ( select COLUMN_NAME from dba_tab_columns_at_db2.domain rtc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name ) and COLUMN_NAME not in ( select COLUMN_NAME from dba_tab_columns_at_db2.domain rtc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name ) and tc.owner in ('SCHEMA_NAME') UNION select '2' ord , rtc.owner usr , '2' loc , RTRIM(SUBSTR(rtc.OWNER, 1, 10)) || ' table ' || rtc.TABLE_NAME || ' on dvlp no col ' || RTRIM(rtc.COLUMN_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_tab_columns_at_db2.domain rtc , dba_objects o where rtc.owner =3D o.owner and rtc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and exists ( select COLUMN_NAME from dba_tab_columns tc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name ) and COLUMN_NAME not in ( select COLUMN_NAME from dba_tab_columns tc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name ) and rtc.owner in ('SCHEMA_NAME') UNION select '3' ord , tc.owner usr , tc.table_name||tc.column_name||'0' loc , RTRIM(SUBSTR(tc.OWNER, 1, 10)) || ' table ' || tc.TABLE_NAME || ' diff in col ' || RTRIM(tc.COLUMN_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_tab_columns tc , dba_objects o where tc.owner =3D o.owner and tc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and DATA_TYPE||DATA_TYPE_MOD||TO_CHAR(DATA_LENGTH)|| TO_CHAR(DATA_PRECISION)||TO_CHAR(DATA_SCALE)||NULLABLE|| TO_CHAR(DEFAULT_LENGTH) <> ( select DATA_TYPE||DATA_TYPE_MOD||TO_CHAR(DATA_LENGTH)|| = TO_CHAR(DATA_PRECISION)||TO_CHAR(DATA_SCALE)||NULLABLE|| TO_CHAR(DEFAULT_LENGTH) from dba_tab_columns_at_db2.domain rtc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name and rtc.column_name =3D tc.column_name ) and tc.owner in ('SCHEMA_NAME') UNION select '3' ord , rtc.owner usr , rtc.table_name||rtc.column_name||'1' loc , ' dvlp: '||DATA_TYPE||' '||DATA_TYPE_MOD||' '|| TO_CHAR(DATA_LENGTH)||' '||TO_CHAR(DATA_PRECISION)||' '|| TO_CHAR(DATA_SCALE)||' '||NULLABLE||' = '||TO_CHAR(DEFAULT_LENGTH) diff from dba_tab_columns_at_db2.domain rtc , dba_objects o where rtc.owner =3D o.owner and rtc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and DATA_TYPE||DATA_TYPE_MOD||TO_CHAR(DATA_LENGTH)|| TO_CHAR(DATA_PRECISION)||TO_CHAR(DATA_SCALE)||NULLABLE|| TO_CHAR(DEFAULT_LENGTH) <> ( select DATA_TYPE||DATA_TYPE_MOD||TO_CHAR(DATA_LENGTH)|| = TO_CHAR(DATA_PRECISION)||TO_CHAR(DATA_SCALE)||NULLABLE|| TO_CHAR(DEFAULT_LENGTH) from dba_tab_columns tc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name and rtc.column_name =3D tc.column_name ) and rtc.owner in ('SCHEMA_NAME') UNION select '3' ord , tc.owner usr , tc.table_name||tc.column_name||'2' loc , ' prod: '||DATA_TYPE||' '||DATA_TYPE_MOD||' '|| TO_CHAR(DATA_LENGTH)||' '||TO_CHAR(DATA_PRECISION)||' '|| TO_CHAR(DATA_SCALE)||' '||NULLABLE||' = '||TO_CHAR(DEFAULT_LENGTH) diff from dba_tab_columns tc , dba_objects o where tc.owner =3D o.owner and tc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and DATA_TYPE||DATA_TYPE_MOD||TO_CHAR(DATA_LENGTH)|| TO_CHAR(DATA_PRECISION)||TO_CHAR(DATA_SCALE)||NULLABLE|| TO_CHAR(DEFAULT_LENGTH) <> ( select DATA_TYPE||DATA_TYPE_MOD||TO_CHAR(DATA_LENGTH)|| = TO_CHAR(DATA_PRECISION)||TO_CHAR(DATA_SCALE)||NULLABLE|| TO_CHAR(DEFAULT_LENGTH) from dba_tab_columns_at_db2.domain rtc where rtc.owner =3D tc.owner and rtc.table_name =3D tc.table_name and rtc.column_name =3D tc.column_name ) and tc.owner in ('SCHEMA_NAME') UNION select '4' ord , rc.owner usr , '1' loc , RTRIM(SUBSTR(rc.OWNER, 1, 10)) || ' table ' || rc.TABLE_NAME || ' on dvlp has cnstr ' || RTRIM(rc.CONSTRAINT_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_constraints_at_db2.domain rc , dba_objects o where rc.owner =3D o.owner and rc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and rc.constraint_type !=3D 'R' and exists ( select TABLE_NAME from dba_constraints c where rc.owner =3D c.owner and rc.table_name =3D c.table_name and c.constraint_type !=3D 'R' ) and CONSTRAINT_NAME not in ( select CONSTRAINT_NAME from dba_constraints c where rc.owner =3D c.owner and rc.table_name =3D c.table_name and c.constraint_type !=3D 'R' ) and rc.owner in ('SCHEMA_NAME') UNION select '4' ord , c.owner usr , '2' loc , RTRIM(SUBSTR(c.OWNER, 1, 10)) || ' table ' || c.TABLE_NAME || ' on prod has cnstr ' || RTRIM(c.CONSTRAINT_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_constraints c , dba_objects o where c.owner =3D o.owner and c.table_name =3D o.object_name and o.object_type =3D 'TABLE' and c.constraint_type !=3D 'R' and exists ( select TABLE_NAME from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_type !=3D 'R' ) and CONSTRAINT_NAME not in ( select CONSTRAINT_NAME from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_type !=3D 'R' ) and c.owner in ('SCHEMA_NAME') UNION select '4' ord , rc.owner usr , '3' loc , RTRIM(SUBSTR(rc.OWNER, 1, 10)) || ' table ' || rc.TABLE_NAME || ' on dvlp has cnstr ' || RTRIM(rc.CONSTRAINT_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_constraints_at_db2.domain rc , dba_objects o where rc.owner =3D o.owner and rc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and rc.constraint_type =3D 'R' and exists ( select TABLE_NAME from dba_constraints c where rc.owner =3D c.owner and rc.table_name =3D c.table_name and c.constraint_type =3D 'R' ) and R_CONSTRAINT_NAME not in ( select R_CONSTRAINT_NAME from dba_constraints c where rc.owner =3D c.owner and rc.table_name =3D c.table_name and c.constraint_type =3D 'R' ) and rc.owner in ('SCHEMA_NAME') UNION select '4' ord , c.owner usr , '4' loc , RTRIM(SUBSTR(c.OWNER, 1, 10)) || ' table ' || c.TABLE_NAME || ' on prod has cnstr ' || RTRIM(c.CONSTRAINT_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_constraints c , dba_objects o where c.owner =3D o.owner and c.table_name =3D o.object_name and o.object_type =3D 'TABLE' and c.constraint_type =3D 'R' and exists ( select TABLE_NAME from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_type =3D 'R' ) and R_CONSTRAINT_NAME not in ( select R_CONSTRAINT_NAME from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_type =3D 'R' ) and c.owner in ('SCHEMA_NAME') UNION select '5' ord , c.owner usr , c.table_name||c.constraint_name||'0' loc , RTRIM(SUBSTR(c.OWNER, 1, 10)) || ' table ' || c.TABLE_NAME || ' diff prod cnstr ' || RTRIM(c.CONSTRAINT_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_constraints c , dba_cons_columns cc , dba_objects o where c.owner =3D o.owner and c.table_name =3D o.object_name and o.object_type =3D 'TABLE' and c.owner =3D cc.owner and c.constraint_name =3D cc.constraint_name and exists ( select constraint_name from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.constraint_name =3D c.constraint_name ) and ( CONSTRAINT_TYPE || R_OWNER || R_CONSTRAINT_NAME || DELETE_RULE || c.STATUS || DEFERRABLE|| DEFERRED <> ( select CONSTRAINT_TYPE || R_OWNER || R_CONSTRAINT_NAME || DELETE_RULE || rc.STATUS || DEFERRABLE || DEFERRED from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_name =3D c.constraint_name ) or cc.column_name not in ( select rcc.column_name from dba_cons_columns_at_db2.domain rcc where rcc.owner =3D cc.owner and rcc.table_name =3D cc.table_name and rcc.constraint_name =3D cc.constraint_name ) or cc.position <> ( select rcc.position from dba_cons_columns_at_db2.domain rcc where rcc.owner =3D cc.owner and rcc.table_name =3D cc.table_name and rcc.constraint_name =3D cc.constraint_name and rcc.column_name =3D cc.column_name ) ) and c.owner in ('SCHEMA_NAME') UNION select '5' ord , rc.owner usr , rc.table_name||rc.constraint_name||'1' loc , ' dvlp: ' || ' ' || CONSTRAINT_TYPE || ' ' || R_OWNER || ' ' = || R_CONSTRAINT_NAME || ' ' || DELETE_RULE || ' ' || rc.STATUS || = ' ' || DEFERRABLE || ' ' || DEFERRED diff from dba_constraints_at_db2.domain rc , dba_cons_columns_at_db2.domain rcc , dba_objects o where rc.owner =3D o.owner and rc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and rc.owner =3D rcc.owner and rc.constraint_name =3D rcc.constraint_name and exists ( select constraint_name from dba_constraints c where rc.owner =3D c.owner and rc.constraint_name =3D c.constraint_name ) and ( CONSTRAINT_TYPE || R_OWNER || R_CONSTRAINT_NAME || DELETE_RULE || rc.STATUS || DEFERRABLE|| DEFERRED <> ( select CONSTRAINT_TYPE || R_OWNER || R_CONSTRAINT_NAME || DELETE_RULE || c.STATUS || DEFERRABLE || DEFERRED from dba_constraints c where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_name =3D c.constraint_name ) ) and rc.owner in ('SCHEMA_NAME') UNION select '5' ord , c.owner usr , c.table_name||c.constraint_name||'2' loc , ' prod: ' || ' ' || CONSTRAINT_TYPE || ' ' || R_OWNER || ' ' = || R_CONSTRAINT_NAME || ' ' || DELETE_RULE || ' ' || c.STATUS || ' = ' || DEFERRABLE || ' ' || DEFERRED diff from dba_constraints c , dba_cons_columns cc , dba_objects o where c.owner =3D o.owner and c.table_name =3D o.object_name and o.object_type =3D 'TABLE' and c.owner =3D cc.owner and c.constraint_name =3D cc.constraint_name and exists ( select constraint_name from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.constraint_name =3D c.constraint_name ) and ( CONSTRAINT_TYPE || R_OWNER || R_CONSTRAINT_NAME || DELETE_RULE || c.STATUS || DEFERRABLE || DEFERRED <> ( select CONSTRAINT_TYPE || R_OWNER || R_CONSTRAINT_NAME || DELETE_RULE || rc.STATUS || DEFERRABLE || DEFERRED from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.table_name =3D c.table_name and rc.constraint_name =3D c.constraint_name ) ) and c.owner in ('SCHEMA_NAME') UNION select '5' ord , rc.owner usr , rc.table_name||rc.constraint_name||'1' loc , ' dvlp: column ' || rcc.column_name || DECODE(rcc.position,NULL,' ', ' position '||TO_CHAR(rcc.position)) diff from dba_constraints_at_db2.domain rc , dba_cons_columns_at_db2.domain rcc , dba_objects o where rc.owner =3D o.owner and rc.table_name =3D o.object_name and o.object_type =3D 'TABLE' and rc.owner =3D rcc.owner and rc.constraint_name =3D rcc.constraint_name and exists ( select constraint_name from dba_constraints c where rc.owner =3D c.owner and rc.constraint_name =3D c.constraint_name ) and ( rcc.column_name not in ( select cc.column_name from dba_cons_columns cc where rcc.owner =3D cc.owner and rcc.table_name =3D cc.table_name and rcc.constraint_name =3D cc.constraint_name ) or rcc.position <> ( select cc.position from dba_cons_columns cc where rcc.owner =3D cc.owner and rcc.table_name =3D cc.table_name and rcc.constraint_name =3D cc.constraint_name and rcc.column_name =3D cc.column_name ) ) and rc.owner in ('SCHEMA_NAME') UNION select '5' ord , c.owner usr , c.table_name||c.constraint_name||'2' loc , ' prod: column ' || cc.column_name || DECODE(cc.position,NULL,' ', ' position '||TO_CHAR(cc.position)) diff from dba_constraints c , dba_cons_columns cc , dba_objects o where c.owner =3D o.owner and c.table_name =3D o.object_name and o.object_type =3D 'TABLE' and c.owner =3D cc.owner and c.constraint_name =3D cc.constraint_name and exists ( select constraint_name from dba_constraints_at_db2.domain rc where rc.owner =3D c.owner and rc.constraint_name =3D c.constraint_name ) and ( cc.column_name not in ( select rcc.column_name from dba_cons_columns_at_db2.domain rcc where rcc.owner =3D cc.owner and rcc.table_name =3D cc.table_name and rcc.constraint_name =3D cc.constraint_name ) or cc.position <> ( select rcc.position from dba_cons_columns_at_db2.domain rcc where rcc.owner =3D cc.owner and rcc.table_name =3D cc.table_name and rcc.constraint_name =3D cc.constraint_name and rcc.column_name =3D cc.column_name ) ) and c.owner in ('SCHEMA_NAME') UNION select '6' ord , i.index_owner usr , i.index_name||'0' loc , RTRIM(SUBSTR(i.INDEX_OWNER, 1, 10)) || ' index ' || i.INDEX_NAME || ', last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_ind_columns i , dba_objects o where i.index_owner =3D o.owner and i.index_name =3D o.object_name and o.object_type =3D 'INDEX' and exists ( select index_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and ( column_name not in ( select ri.column_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) or TABLE_OWNER || TABLE_NAME not in ( select TABLE_OWNER || TABLE_NAME from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) ) and i.index_owner in ('SCHEMA_NAME') UNION select '6' ord , ri.index_owner usr , ri.index_name||'1' loc , ' dvlp: tab_own=3D' || TABLE_OWNER || ' tab_name=3D' || = TABLE_NAME || ' col_name=3D' || COLUMN_NAME diff from dba_ind_columns_at_db2.domain ri , dba_objects o where ri.index_owner =3D o.owner and ri.index_name =3D o.object_name and o.object_type =3D 'INDEX' and exists ( select index_name from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and ( column_name not in ( select ri.column_name from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) or TABLE_OWNER || TABLE_NAME not in ( select TABLE_OWNER || TABLE_NAME from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) ) and ri.index_owner in ('SCHEMA_NAME') UNION select '6' ord , i.index_owner usr , i.index_name||'2' loc , ' prod: tab_own=3D' || TABLE_OWNER || ' tab_name=3D' || = TABLE_NAME || ' col_name=3D' || COLUMN_NAME diff from dba_ind_columns i , dba_objects o where i.index_owner =3D o.owner and i.index_name =3D o.object_name and o.object_type =3D 'INDEX' and exists ( select index_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and ( column_name not in ( select ri.column_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) or TABLE_OWNER || TABLE_NAME not in ( select TABLE_OWNER || TABLE_NAME from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) ) and i.index_owner in ('SCHEMA_NAME') UNION select '7' ord , i.index_owner usr , i.index_name||i.column_name||'0' loc , RTRIM(SUBSTR(i.INDEX_OWNER, 1, 10)) || ' index ' || i.INDEX_NAME || ' column ' || RTRIM(i.COLUMN_NAME) || '. Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_ind_columns i , dba_objects o where i.index_owner =3D o.owner and i.index_name =3D o.object_name and o.object_type =3D 'INDEX' and exists ( select index_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and TABLE_OWNER || TABLE_NAME in ( select TABLE_OWNER || TABLE_NAME from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and column_name in ( select ri.column_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name and ri.column_name =3D i.column_name ) and TO_CHAR(COLUMN_POSITION) || TO_CHAR(COLUMN_LENGTH) <> ( select TO_CHAR(COLUMN_POSITION) || TO_CHAR(COLUMN_LENGTH) from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name and ri.column_name =3D i.column_name ) and i.index_owner in ('SCHEMA_NAME') UNION select '7' ord , ri.index_owner usr , ri.index_name||ri.column_name||'1' loc , ' dvlp: col_pos=3D' || TO_CHAR(COLUMN_POSITION) || ' col_len=3D' || TO_CHAR(COLUMN_LENGTH) from dba_ind_columns_at_db2.domain ri , dba_objects o where ri.index_owner =3D o.owner and ri.index_name =3D o.object_name and o.object_type =3D 'INDEX' and exists ( select index_name from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and TABLE_OWNER || TABLE_NAME in ( select TABLE_OWNER || TABLE_NAME from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and column_name in ( select i.column_name from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name and ri.column_name =3D i.column_name ) and TO_CHAR(COLUMN_POSITION) || TO_CHAR(COLUMN_LENGTH) <> ( select TO_CHAR(COLUMN_POSITION) || TO_CHAR(COLUMN_LENGTH) from dba_ind_columns i where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name and ri.column_name =3D i.column_name ) and ri.index_owner in ('SCHEMA_NAME') UNION select '7' ord , i.index_owner usr , i.index_name||i.column_name||'2' loc , ' prod: col_pos=3D' || TO_CHAR(COLUMN_POSITION) || ' col_len=3D' || TO_CHAR(COLUMN_LENGTH) from dba_ind_columns i , dba_objects o where i.index_owner =3D o.owner and i.index_name =3D o.object_name and o.object_type =3D 'INDEX' and exists ( select index_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and TABLE_OWNER || TABLE_NAME in ( select TABLE_OWNER || TABLE_NAME from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name ) and column_name in ( select ri.column_name from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name and ri.column_name =3D i.column_name ) and TO_CHAR(COLUMN_POSITION) || TO_CHAR(COLUMN_LENGTH) <> ( select TO_CHAR(COLUMN_POSITION) || TO_CHAR(COLUMN_LENGTH) from dba_ind_columns_at_db2.domain ri where ri.index_owner =3D i.index_owner and ri.index_name =3D i.index_name and ri.column_name =3D i.column_name ) and i.index_owner in ('SCHEMA_NAME') UNION select '8' ord , o.owner usr , '1' loc , 'different view on prod and dvlp ' || o.owner || '.' || = o.view_name || ': prod length ' || o.text_length || ' dvlp ' || = ro.text_length from dba_views o , dba_views_at_db2.domain ro where ro.owner =3D o.owner and ro.VIEW_NAME =3D o.VIEW_NAME and ro.text_length !=3D o.text_length and o.owner in ('SCHEMA_NAME') UNION select '9' ord , s.owner usr , s.synonym_name||'0' loc , RTRIM(SUBSTR(s.OWNER, 1, 10)) || ' synonym ' || s.SYNONYM_NAME || ' different. ' || 'Last DDL=3D' || TO_CHAR(o.LAST_DDL_TIME) diff from dba_synonyms s , dba_objects o where s.owner =3D o.owner and s.table_name =3D o.object_name and o.object_type =3D 'SYNONYM' and TABLE_OWNER || TABLE_NAME || DB_LINK <> ( select TABLE_OWNER || TABLE_NAME || DB_LINK from dba_synonyms_at_db2.domain rs where rs.owner =3D s.owner and rs.synonym_name =3D s.synonym_name ) and s.owner in ('SCHEMA_NAME') UNION select '9' ord , s.owner usr , s.synonym_name||'2' loc , ' prod: for table ' || RTRIM(TABLE_OWNER) || '.' || RTRIM(TABLE_NAME) || DECODE(DB_LINK, NULL, '','@'||DB_LINK) from dba_synonyms s , dba_objects o where s.owner =3D o.owner and s.table_name =3D o.object_name and o.object_type =3D 'SYNONYM' and TABLE_OWNER || TABLE_NAME || DB_LINK <> ( select TABLE_OWNER || TABLE_NAME || DB_LINK from dba_synonyms_at_db2.domain rs where rs.owner =3D s.owner and rs.synonym_name =3D s.synonym_name ) and s.owner in ('SCHEMA_NAME') UNION select '9' ord , rs.owner usr , rs.synonym_name||'1' loc , ' dvlp: for table ' || RTRIM(TABLE_OWNER) || '.' || RTRIM(TABLE_NAME) || DECODE(DB_LINK, NULL, '','@'||DB_LINK) from dba_synonyms_at_db2.domain rs , dba_objects o where rs.owner =3D o.owner and rs.table_name =3D o.object_name and o.object_type =3D 'SYNONYM' and TABLE_OWNER || TABLE_NAME || DB_LINK <> ( select TABLE_OWNER || TABLE_NAME || DB_LINK from dba_synonyms s where rs.owner =3D s.owner and rs.synonym_name =3D s.synonym_name ) and rs.owner in ('SCHEMA_NAME') UNION select 'A' ord , p.grantee usr , '2' loc , RTRIM(SUBSTR(p.GRANTEE, 1, 10)) || ' on prod has sys prvlg ' || RTRIM(SUBSTR(p.PRIVILEGE, 1, 40)) || ' admin =3D ' || p.ADMIN_OPTION diff from dba_sys_privs p where PRIVILEGE || ADMIN_OPTION not in ( select PRIVILEGE || ADMIN_OPTION from dba_sys_privs_at_db2.domain rp where p.grantee =3D rp.grantee ) and p.grantee in ('SCHEMA_NAME') UNION select 'A' ord , rp.grantee usr , '1' loc , RTRIM(SUBSTR(rp.GRANTEE, 1, 10)) || ' on dvlp has sys prvlg ' = || RTRIM(SUBSTR(rp.PRIVILEGE, 1, 40)) || ' admin =3D ' || rp.ADMIN_OPTION diff from dba_sys_privs_at_db2.domain rp where PRIVILEGE || ADMIN_OPTION not in ( select PRIVILEGE || ADMIN_OPTION from dba_sys_privs p where p.grantee =3D rp.grantee ) and rp.grantee in ('SCHEMA_NAME') UNION select 'B' ord , p.grantee usr , '2' loc , RTRIM(SUBSTR(p.GRANTEE, 1, 10)) || ' on prod has role ' || p.GRANTED_ROLE diff from dba_role_privs p where GRANTED_ROLE not in ( select GRANTED_ROLE from dba_role_privs_at_db2.domain rp where p.grantee =3D rp.grantee ) and p.grantee in ('SCHEMA_NAME') UNION select 'C' ord , rp.grantee usr , '1' loc , RTRIM(SUBSTR(rp.GRANTEE, 1, 10)) || ' on dvlp has role ' || rp.GRANTED_ROLE diff from dba_role_privs_at_db2.domain rp where GRANTED_ROLE not in ( select GRANTED_ROLE from dba_role_privs p where p.grantee =3D rp.grantee ) and rp.grantee in ('SCHEMA_NAME') UNION select 'C' ord , p.grantee usr , '2' loc , RTRIM(SUBSTR(p.GRANTEE, 1, 10)) || ' role ' || p.GRANTED_ROLE || ' on prod has' || ' admin=3D' || p.ADMIN_OPTION || ' default=3D' || = p.DEFAULT_ROLE diff from dba_role_privs p where ADMIN_OPTION || DEFAULT_ROLE <> ( select ADMIN_OPTION || DEFAULT_ROLE from dba_role_privs_at_db2.domain rp where p.grantee =3D rp.grantee and p.granted_role =3D rp.granted_role ) and p.grantee in ('SCHEMA_NAME') UNION select 'D' ord , rp.grantee usr , '1' loc , RTRIM(SUBSTR(rp.GRANTEE, 1, 10)) || ' role ' || rp.GRANTED_ROLE || 'on dvlp has' || ' admin=3D' || rp.ADMIN_OPTION || ' default=3D' || = rp.DEFAULT_ROLE diff from dba_role_privs_at_db2.domain rp where ADMIN_OPTION || DEFAULT_ROLE <> ( select ADMIN_OPTION || DEFAULT_ROLE from dba_role_privs p where p.grantee =3D rp.grantee and p.granted_role =3D rp.granted_role ) and rp.grantee in ('SCHEMA_NAME') UNION select 'D' ord , r.grantee usr , '1' loc , RTRIM(SUBSTR(r.GRANTEE, 1, 10)) || ' on prod was granted ' || s.GRANTEE || ' role with diff in ' || RTRIM(SUBSTR(s.PRIVILEGE, 1, 40)) || ' prvlg, admin=3D' || s.ADMIN_OPTION diff from dba_sys_privs s , dba_role_privs r where s.grantee =3D r.granted_role and s.PRIVILEGE || s.ADMIN_OPTION not in ( select rs.PRIVILEGE || rs.ADMIN_OPTION from dba_sys_privs_at_db2.domain rs where s.grantee =3D rs.grantee ) and r.grantee in ('SCHEMA_NAME') UNION select 'E' ord , t.grantor usr , '2'||GRANTEE loc , RTRIM(SUBSTR(t.GRANTOR, 1, 10)) || ' on prod gave ' || RTRIM(SUBSTR(t.GRANTEE, 1, 10)) || ' priv ' || RTRIM(SUBSTR(t.PRIVILEGE, 1, 40)) || ' for ' || RTRIM(SUBSTR(t.OWNER, 1, 10)) || '.' || RTRIM(SUBSTR(t.TABLE_NAME, 1, 20)) || DECODE(t.GRANTABLE, 'NO', ' non grantable', ' grantable') diff from dba_tab_privs t where OWNER || TABLE_NAME || GRANTEE || PRIVILEGE || GRANTABLE not in ( select OWNER || TABLE_NAME || GRANTEE || PRIVILEGE || = GRANTABLE from dba_tab_privs_at_db2.domain rt where t.grantor =3D rt.grantor ) and t.grantor in ('SCHEMA_NAME') UNION select 'E' ord , rt.grantor usr , '1'||GRANTEE loc , RTRIM(SUBSTR(rt.GRANTOR, 1, 10)) || ' on dvlp gave ' || RTRIM(SUBSTR(rt.GRANTEE, 1, 10)) || ' priv ' || RTRIM(SUBSTR(rt.PRIVILEGE, 1, 40)) || ' for ' || RTRIM(SUBSTR(rt.OWNER, 1, 10)) || '.' || RTRIM(SUBSTR(rt.TABLE_NAME, 1, 20)) || DECODE(rt.GRANTABLE, 'NO', ' non grantable', ' grantable') = diff from dba_tab_privs_at_db2.domain rt where OWNER || TABLE_NAME || GRANTEE || PRIVILEGE || GRANTABLE not in ( select OWNER || TABLE_NAME || GRANTEE || PRIVILEGE || = GRANTABLE from dba_tab_privs t where t.grantor =3D rt.grantor ) and rt.grantor in ('SCHEMA_NAME') UNION select 'F' ord , t.grantee usr , '2'||GRANTOR loc , RTRIM(SUBSTR(t.GRANTEE, 1, 10)) || ' on prod got ' || RTRIM(SUBSTR(t.PRIVILEGE, 1, 40)) || ' priv for ' || RTRIM(SUBSTR(t.OWNER, 1, 10)) || '.' || RTRIM(SUBSTR(t.TABLE_NAME, 1, 20)) || DECODE(t.GRANTABLE, 'NO', ' non grantable', ' grantable') diff from dba_tab_privs t where OWNER || TABLE_NAME || GRANTOR || PRIVILEGE || GRANTABLE not inReceived on Thu Nov 16 2000 - 21:09:30 CST