数据库表对比


spool /home/oracle/sql/tan/c.log


set timing on


prompt begin


drop table QUERYVALUE purge;

create table QUERYVALUE

(

  SCHAMENAME VARCHAR2(100) not null,

  TABLENAME  VARCHAR2(200) not null,

  RECORDNUMS NUMBER(20,2) not null

);


create or replace procedure onetable(user1 varchar,user2 varchar,tabname varchar) is

v_sql varchar2(2000);

v_rows NUMBER(20,2);

type cur is ref cursor;

cura cur;

begin

     v_sql := 'select count(*) from (select * from ' || user1 || '.' || tabname || '@tapdblink222 minus select * from ' || user2 || '.' || tabname || ') a';

     open cura for v_sql;

     loop

     fetch cura into v_rows;

     exit when cura%notfound;

     insert into queryvalue select user1,tabname,v_rows from dual;

     end loop;

     close cura;

     commit;

end;

/





create or replace procedure usertable(user1 varchar,user2 varchar) is

v_sql varchar2(2000);

v_table varchar2(200);

type cur is ref cursor;

cura cur;

begin

     v_sql:='select * from (select t.table_name from dba_tables t where owner=upper(''' || user1 || ''') and t.table_name <>''TMP_JYSLDTOJPMORGAN''  minus select table_name from dba_tab_columns where 

owner=upper(''' || user1 || ''') and (to_char(data_type) like ''%LOB%'' or to_char(data_type) like ''%LONG%''))  order by table_name';

     open cura for v_sql;

     loop

         fetch cura into v_table;

         exit when cura%notfound; 

         onetable(user1,user2,v_table);

     end loop;

     close cura;

end;

/




create or replace procedure allcheck is

begin

     delete from queryvalue;

     commit;

     usertable('fagmv25','fagmv25');

end;

/



select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "start_allcheck" from dual;

exec allcheck;

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "end_allcheck" from dual;




set wrap off 

set linesize 200

col SCHAMENAME for a20

col TABLENAME for a40

col RECORDNUMS for a80

select * from sys.queryvalue where rownum <10 order by  1,2;

select count(*) from sys.queryvalue;

set timing off;

spool off;





/*



select count(*) from (select * from faqdii.TMP_JYSLDTOJPMORGAN@tapdblink222 minus select * from faqdii.TMP_JYSLDTOJPMORGAN);



select count(*) from (select t.table_name from dba_tables t

 where owner=upper('faqdii') minus 

select table_name from dba_tab_columns 

where owner=upper('fazhv25') 

and (to_char(data_type) like '%LOB%' or to_char(data_type) like '%LONG%')) a order by table_name desc;



select distinct(data_type) from dba_tab_columns where owner = upper('fagmv25');

select distinct(data_type) from dba_tab_columns where owner = upper('faqdii');

select distinct(data_type) from dba_tab_columns where owner = upper('fazhv25');



select 'select count(*)  '|| table_name || ' from (select * from fagmv25.' || table_name || '@tapdblink222 minus select * from fagmv25.'||table_name||'); ' 

from 

dba_tables where owner=upper('fagmv25') and table_name not in (select table_name from dba_tab_columns where owner=upper('fagmv25') 

and (to_char(data_type) like '%LOB%' or to_char(data_type) like '%LONG%'))  order by table_name desc;



set wrap off

set linesize 200

col data_type for a20

col owner for a10

select owner ,table_name ,column_name ,data_type ,DATA_LENGTH,COLUMN_ID from dba_tab_columns where owner=upper('fagmv25')  and table_name not like 'BIN$%'

order by table_name,column_name;


faqdii.TMP_JYSLDTOJPMORGAN 

fagmv25.XGSDXX

fagmv25.TFILEPATH


create table faqdii.TMP_JYSLDTOJPMORGAN_NEW  as select * from faqdii.TMP_JYSLDTOJPMORGAN@tapdblink222;

create table fagmv25.XGSDXX_NEW  as select * from fagmv25.XGSDXX@tapdblink222;

create table fagmv25.TFILEPATH_NEW  as select * from fagmv25.TFILEPATH@tapdblink222;

select count(*)  from (select * from faqdii.TMP_JYSLDTOJPMORGAN@tapdblink222 minus select * from faqdii.TMP_JYSLDTOJPMORGAN_NEW); 

select count(*)  from (select * from fagmv25.XGSDXX@tapdblink222 minus select * from fagmv25.XGSDXX_NEW); 

select count(*)  from (select * from fagmv25.TFILEPATH@tapdblink222 minus select * from fagmv25.TFILEPATH_NEW); 

select count(*)  from (select * from faqdii.TMP_JYSLDTOJPMORGAN@tapdblink222 minus select * from faqdii.TMP_JYSLDTOJPMORGAN); 

select count(*)  from (select * from fagmv25.XGSDXX@tapdblink222 minus select * from fagmv25.XGSDXX); 

select count(*)  from (select * from fagmv25.TFILEPATH@tapdblink222 minus select * from fagmv25.TFILEPATH); 



select owner ,table_name ,column_name ,data_type ,DATA_LENGTH,COLUMN_ID from dba_tab_columns where owner=upper('faqdii')  and table_name= 'TMP_JYSLDTOJPMORGAN_NEW' 

order by table_name,column_name;


select count(*)  from (select * from faqdii.TMP_JYSLDTOJPMORGAN@tapdblink222 minus select * from faqdii.TMP_JYSLDTOJPMORGAN_NEW); 


*/

猜你喜欢

转载自blog.csdn.net/zhangxu777/article/details/82421678