现有两个实例orcl_1和orcl_2,在这两个实例下都有data_dm这个用户,两个用户下存的都是代码表,所有的表都只有两个字段:ID,NAME,但是这两个用户下的代码表有相同的有不同的,现在要比较相同的那些表里面的数据是否相同,要把所有不同的数据全部显示出来,应该怎么写SQL,求大神帮帮忙,万分感谢
解决方案 »
- 在存储过程循环调用另一个存储过程,效率会不会很差?
- 在oracle的insert select连用时的主键值是大家是怎么解决的
- 求一SQL写法
- ACCESS 数据库 的select结果集怎么处理?
- oracle 查询实例问题 , 一张表里面的值相互比较
- 求助'这个试图如何优化??
- Oracle错误:ORA-01033: ORACLE initialization or shutdown in progress
- 为什么我在安装oracle9i的过程中,大约14%时总是出错!
- 关于在oracle中存储和调用图片?
- 关于OCI的问题。
- 求教,可以在c#或java中使用call调用oracle存储过程并获取返回的结果集吗?
- 子程序或游标 'TEST2' 已在程序包说明中声明, 必须在程序定义 怎么回事 看视频能完美运行 我的代码就抱着错误
create public database link mydblink connect to data_dm IDENTIFIED BY 密码
using '
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))
)
(CONNECT_DATA =
(SID = data_dm)
)
)';
然后,
select * from dmb b3,data_dm.dmb@mydblink b4 where b3.id!=b4.id;
问题1:取出所有表进行比较(可加入一定过滤条件)
问题2:保存不同的记录明细数据
(这里比较不同:一种理解知道都有id比较id的不同,一种是整条数据不同比较整条数据——为了盘点割接原因造成的数据遗漏等)1.用游标取出用户下的所有表名称
select * from user_tables where table_name = '用户名' 做为 一层循环2.取游标的表名称进行拼接取差异记录,插入到同结构 表名称+‘_bak’表中
类似如下:
/*逻辑并非真正SQL*/
create table t1_bak as
(select id from t1
minus
select id from t1@my_dblink) /*t1有,t1@my_dblink没有的记录*/
union
(select id from t1@my_dblink
minus
select id from t1) /*t1没有,t1@my_dblink有的记录*/