两个库中相同用户名下的表数据比对

hohai2003 2009-07-24 10:53:23
现有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

当用户下的表比表多时这种方法就不合适了,很麻烦,有哪位给出一种更好的方法?
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-07-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zcs_1 的回复:]
给楼主一个函数,表名是传入参数,如果返回0,则两表数据量相等,返回1则不等.

CREATE OR REPLACE FUNCTION comp_tab_rows(p_tname VARCHAR2) RETURN NUMBER AS
  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;
/

[/Quote]

同意这样的思路,做强大一点的话,可以做的和xplan一样,用自己的一些表来做结果的收集,

比如结果条数,数据结构,做的更强大的,对记录也进行比较。
zheping_xym 2009-07-28
  • 打赏
  • 举报
回复
还是用动态SQL吧
zcs_1 2009-07-24
  • 打赏
  • 举报
回复
给楼主一个函数,表名是传入参数,如果返回0,则两表数据量相等,返回1则不等.

CREATE OR REPLACE FUNCTION comp_tab_rows(p_tname VARCHAR2) RETURN NUMBER AS
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;
/
chenqingyu 2009-07-24
  • 打赏
  • 举报
回复
表的行数?是指每个表的数据量吧

user_tables里有个字段是记录表数据量的,拿出来比就是了。
hohai2003 2009-07-24
  • 打赏
  • 举报
回复
明白了,要经过分析才显示的.
hohai2003 2009-07-24
  • 打赏
  • 举报
回复
我看了下user_tables视图下的num_rows表没有内容啊,显示不了表的行数
hohai2003 2009-07-24
  • 打赏
  • 举报
回复
谢谢!chenqiyu

\我想实现某个用户下所有表的比较怎么样好点呢?表多的话这种方法可能有点麻烦的,

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧