在很多情况下,我们需要进行跨数据库实例进行数据的复制迁移。比如将生产系统的数据拷贝到测试系统中,方便在测试系统中进行开发测试。除了采用从A库中将数据导出,再将导出的数据导入B库(效率比较低)。为了更高效地复制数据,此时,就可以利用Oracle中提供的DB-Link进行数据的快速复制。
–创建DB_link的语句
create public database link zs_link
connect to 用户 identified by 密码
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.30.x.xxx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = 服务名)))';
–表复制语句(注意两个表的字段和顺序必须一致,不一致的手动补全)
- 表一致情况:
insert into table2 select t1.* from table1@zs_esb_link t1;
- 表一致情况,手动补全字段:比如表t2中包含t1中不含的字段Total,delTotal,insertTotal
insert into t2
select'10'Total,'0'delTotal,'10'insertTotal,t.uuid,t.batchno,t.componentid,t.componentcodefrom table1@DWZS t1
where t1.flag !='delete';
这样就能高效实现跨库表数据复制。