开发同学说有一个需求,需要在两个库之间同步一张表的数据 涉及到两个业务系统,这张表的内容用于页面展示 暂且称为A库和B库,表名都相同,称为T

该表只是新增,思考了下,有两个比较方便的方法: 1.定时将A库的表T同步至B库,然后将A库表T和B库表T对比,将差异数据插入到B库的表T(或者使用dblink进行实现,相对简单一些) 下面是使用系统定时任务进行的操作

#!/bin/bash

. /home/oracle/.bash_profile
exp jdorcl/jdorcl@b2borcl_184 TABLES=T_JD_LEAD_GOODS file=/home/oracle/sync_tab/exp_t_jd_lead_goods.dmp log=/home/oracle/sync_tab/exp_
t_jd_lead_goods.log
#sqlplus jdorcl/\"jdorcl\@2018\" <<EOF
sqlplus system/oracle <<EOF
truncate table T_JD_LEAD_GOODS ;
drop table T_JD_LEAD_GOODS ;
EOF
imp system/oracle file=/home/oracle/sync_tab/exp_t_jd_lead_goods.dmp fromuser=jdorcl touser=system tables=T_JD_LEAD_GOODS log=/home/or
acle/sync_tab/imp_t_jd_lead_goods.log
sqlplus system/oracle <<EOF
insert into adminsup.t_jd_lead_goods select * from (SELECT * FROM system.t_jd_lead_goods a WHERE NOT EXISTS (SELECT * FROM adminsup.t_
jd_lead_goods b WHERE a.id = b.id));
commit ;
EOF

2.使用物化视图 使用物化视图也需要dblink辅助 具体参考:https://blog.csdn.net/hhduyc/article/details/84009859

其实更方便的是开发其实可以从应用上来解决 通过dblink来查询两个表,union就可以,而且原来两个表的数据也不用更改,保留原表的数据,也可以用来后续排查订单来源。

简单记录一下。