现有A,B两个库,通过复制软件将A库4个用户下的所有对象复制到B库对应的用户下,
现想通过建立数据库链接的形式比对A,B两端4个用户下的表的行数是否一致,
我采用的是的如下方法:select 'select count(*) from '||table_name from user_tables
minus
select 'select count(*) from '||table_name from user_tables@to_A当用户下的表比表多时这种方法就不合适了,很麻烦,有哪位给出一种更好的方法?
现想通过建立数据库链接的形式比对A,B两端4个用户下的表的行数是否一致,
我采用的是的如下方法:select 'select count(*) from '||table_name from user_tables
minus
select 'select count(*) from '||table_name from user_tables@to_A当用户下的表比表多时这种方法就不合适了,很麻烦,有哪位给出一种更好的方法?
strsql1 VARCHAR2(4000);
strsql2 VARCHAR2(4000);
intcount1 NUMBER;
intcount2 NUMBER;
BEGIN
strsql1 := 'SELECT COUNT(*) FROM ' || p_tname; --求本地表的数据量
strsql2 := 'SELECT COUNT(*) FROM ' || p_tname || '@to_a'; --求远程表的数据量
EXECUTE IMMEDIATE strsql1 INTO intcount1;
EXECUTE IMMEDIATE strsql2 INTO intcount2;
IF intcount1 = intcount2 THEN
RETURN 0;
ELSE
RETURN 1;
END IF;
END;
/
同意这样的思路,做强大一点的话,可以做的和xplan一样,用自己的一些表来做结果的收集,比如结果条数,数据结构,做的更强大的,对记录也进行比较。