exhange partitoin要检查
1 字段类型(相同名字不同顺序不检查(只要类型一致),导致select * 结果错误)
2 index 是否一样
3. Constraint 的eanable validate是否一样
4. loging noloing 没有影响
---index
--源表和swap表对比,full join 更方便
with a as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename||'_SWAP' and di.table_owner='MIG_CORE' order by INDEX_NAME) , --327
b as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename and di.table_owner='MIG_CORE' order by INDEX_NAME ) --327
select a.owner, a.index_name,a.table_name, a.table_owner, a.UNIQUENESS, b.owner,b.table_name, b.index_name, b.table_owner, b.UNIQUENESS
From a,b where a.table_name(+)=b.table_name||'_SWAP' and replace(a.INDEX_NAME(+) ,'_SWAP')=b.INDEX_NAME
and a.UNIQUENESS(+) =b.UNIQUENESS and a.owner is null ;
with a as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename||'_SWAP' and di.table_owner='MIG_CORE' order by INDEX_NAME) ,
b as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename and di.table_owner='MIG_CORE' order by INDEX_NAME )
select a.owner, a.index_name,a.table_name, a.table_owner, a.UNIQUENESS, b.owner,b.table_name, b.index_name, b.table_owner, b.UNIQUENESS
From a,b where a.table_name=b.table_name(+)||'_SWAP' and replace(a.INDEX_NAME ,'_SWAP')=b.INDEX_NAME(+)
and a.UNIQUENESS =b.UNIQUENESS(+) and b.owner is null ;
---用full join 改进
with a as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename||'_SWAP' and di.table_owner='MIG_CORE' order by INDEX_NAME) , --327
b as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename and di.table_owner='MIG_CORE' order by INDEX_NAME ) --327
select a.owner, a.index_name,a.table_name, a.table_owner, a.UNIQUENESS, b.owner,b.table_name, b.index_name, b.table_owner, b.UNIQUENESS
From a full join b on a.table_name=b.table_name||'_SWAP' and replace(a.INDEX_NAME ,'_SWAP')=b.INDEX_NAME
and a.UNIQUENESS =b.UNIQUENESS where a.owner is null or b.owner is null ; -- check
--Target 表和swap表对比,full join 更方便
with a as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename||'_SWAP' and di.table_owner='MIG_CORE' order by INDEX_NAME) ,
b as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename and di.table_owner='CORE' order by INDEX_NAME )
select a.owner, a.index_name,a.table_name, a.table_owner, a.UNIQUENESS, b.owner,b.table_name, b.index_name, b.table_owner, b.UNIQUENESS
From a,b where a.table_name=b.table_name(+)||'_SWAP' and replace(a.INDEX_NAME ,'_SWAP')=b.INDEX_NAME(+) and a.UNIQUENESS =b.UNIQUENESS(+) and b.owner is null ;
with a as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename||'_SWAP' and di.table_owner='MIG_CORE' order by INDEX_NAME) ,
b as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename and di.table_owner='CORE' order by INDEX_NAME )
select a.owner, a.index_name,a.table_name, a.table_owner, a.UNIQUENESS, b.owner,b.table_name, b.index_name, b.table_owner, b.UNIQUENESS
From a,b where a.table_name(+)=b.table_name||'_SWAP' and replace(a.INDEX_NAME(+) ,'_SWAP')=b.INDEX_NAME and a.UNIQUENESS(+) =b.UNIQUENESS and a.owner is null ;
---用full join 改进
with a as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename||'_SWAP' and di.table_owner='MIG_CORE' order by INDEX_NAME) ,
b as
(select * From dba_indexes di,deploy.exchangeorder ex where di.table_name=ex.tablename and di.table_owner='CORE' order by INDEX_NAME ) --327
select a.owner, a.index_name,a.table_name, a.table_owner, a.UNIQUENESS, b.owner,b.table_name, b.index_name, b.table_owner, b.UNIQUENESS
From a full join b on a.table_name=b.table_name||'_SWAP' and replace(a.INDEX_NAME ,'_SWAP')=b.INDEX_NAME
and a.UNIQUENESS =b.UNIQUENESS where a.owner is null or b.owner is null ; -- check
---------------constraint
select count(*) from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP' and dc.owner='MIG_CORE' ;
select count(*) from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename and dc.owner='MIG_CORE' ;
select count(*) from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename and dc.owner='CORE' ;
select count(*) from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP' and dc.r_owner='MIG_CORE' and dc.constraint_type =('R') ;
select count(*) from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP' and dc.r_owner<>'MIG_CORE' and dc.constraint_type =('R') ;
-------将所有Constraint 启用起来,否则exchange老是有问题
select ' alter table MIG_CORE.'|| TABLE_NAME||' enable validate constraint '||CONSTRAINT_NAME||' ;',status,VALIDATED,CONSTRAINT_NAME,constraint_type
from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
--and dc.constraint_type =('R')
and dc.owner='MIG_CORE'
--and dc.r_owner='MIG_CORE'
and (status <>'ENABLED' or VALIDATED<>'VALIDATED');
select ' alter table CORE.'|| TABLE_NAME||' enable validate constraint '||CONSTRAINT_NAME||' ;',status,VALIDATED,CONSTRAINT_NAME,constraint_type
from dba_constraints dc ,deploy.exchangeorder ex where
dc.table_name=ex.tablename and
--and dc.constraint_type =('R') and
dc.owner='CORE'
--and dc.r_owner='MIG_CORE'
and (status <>'ENABLED' or VALIDATED<>'VALIDATED');
-----constraint diff 检查是否一致
with a as(
select * from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
--and dc.constraint_type =('R')
and dc.owner='MIG_CORE'
and (dc.r_owner='MIG_CORE' or dc.r_owner is null)
),
b as (
select * from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename
--and dc.constraint_type =('R')
and dc.owner='MIG_CORE'
)
select * from a full join b on a.table_name =b.table_name ||'_SWAP' and replace(a.CONSTRAINT_NAME ,'_SWAP')=b.CONSTRAINT_NAME
and a.validated= b.validated and a.STATUS= b.STATUS
where a.owner is null or b.owner is null ; -- check
with a as(
select * from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
--and dc.constraint_type =('R')
and dc.owner='MIG_CORE'
and (dc.r_owner<>'MIG_CORE' or dc.r_owner is null) )
,
b as (
select * from dba_constraints dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename
--and dc.constraint_type =('R')
and dc.owner='CORE'
)
select * from a full join b on a.table_name =b.table_name ||'_SWAP'
and replace(a.CONSTRAINT_NAME ,'_SWAP')=decode(b.CONSTRAINT_TYPE,'R',b.CONSTRAINT_NAME ||'9' ,b.CONSTRAINT_NAME)--CONSTRAINT_NAME R add '9'
and a.validated= b.validated and a.STATUS= b.STATUS
where a.owner is null or b.owner is null -- check
-----column order diff
with a as(
select * from dba_tab_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
and dc.owner='MIG_CORE'
),
b as (
select * from dba_tab_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename
and dc.owner='MIG_CORE'
)
select * from a full join b on a.table_name =b.table_name ||'_SWAP' and replace(a.COLUMN_NAME ,'_SWAP')=b.COLUMN_NAME
and a.DATA_TYPE= b.DATA_TYPE and a.DATA_LENGTH= b.DATA_LENGTH and a.NULLABLE=b.NULLABLE and a.COLUMN_ID=b.COLUMN_ID
where a.owner is null or b.owner is null ; -- check
with a as(
select * from dba_tab_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
and dc.owner='MIG_CORE'
),
b as (
select * from dba_tab_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename
and dc.owner='CORE'
)
select * from a full join b on a.table_name =b.table_name ||'_SWAP' and replace(a.COLUMN_NAME ,'_SWAP')=b.COLUMN_NAME
and a.DATA_TYPE= b.DATA_TYPE and a.DATA_LENGTH= b.DATA_LENGTH and a.NULLABLE=b.NULLABLE and a.COLUMN_ID=b.COLUMN_ID
where a.owner is null or b.owner is null ; -- check
-----index order diff
with a as(
select * from dba_ind_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
and dc.TABLE_OWNER='MIG_CORE'
),
b as (
select * from dba_ind_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename
and dc.TABLE_OWNER='MIG_CORE'
)
select * from a full join b on a.table_name =b.table_name ||'_SWAP' and replace(a.INDEX_NAME ,'_SWAP')=b.INDEX_NAME
and a.COLUMN_NAME= b.COLUMN_NAME and a.COLUMN_POSITION= b.COLUMN_POSITION and a.COLUMN_POSITION=b.COLUMN_POSITION
where a.TABLE_OWNER is null or b.TABLE_OWNER is null ; -- check
with a as(
select * from dba_ind_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename||'_SWAP'
and dc.TABLE_OWNER='MIG_CORE'
),
b as (
select * from dba_ind_columns dc ,deploy.exchangeorder ex where dc.table_name=ex.tablename
and dc.TABLE_OWNER='CORE'
)
select * from a full join b on a.table_name =b.table_name ||'_SWAP' and replace(a.INDEX_NAME ,'_SWAP')=b.INDEX_NAME
and a.COLUMN_NAME= b.COLUMN_NAME and a.COLUMN_POSITION= b.COLUMN_POSITION and a.COLUMN_POSITION=b.COLUMN_POSITION
where a.TABLE_OWNER is null or b.TABLE_OWNER is null ; -- check