exchange partition 前 index 和Constraint检查

 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  

  

你可能感兴趣的:(java,数据库,sql)