1. 程式人生 > >兩臺服務器不同oracle數據庫使用dblink+merge實現數據同步

兩臺服務器不同oracle數據庫使用dblink+merge實現數據同步

數據庫 oracle數據 inf when ide image nbsp 技術 驗證

目標:兩臺服務器兩個oracle數據庫

主服務器:192.168.0.1 主數據庫:center

目標服務器:192.168.0.2 目標數據庫:branch

//首先保證兩臺服務器可以ping通

--1、在主數據庫中創建dblink ,branch為dblink名稱,用戶名和密碼寫自己的,192.168.0.2為目標服務器,orcl為目標數據庫

create database link branch connect to 用戶名 identified by "密碼" using ‘192.168.0.2/branch‘;

--2、驗證dblink,branch為dblink名稱
select * from 目標數據庫中任意一個表名稱@branch;

--3、通過merge語句完成表數據同步, 通過主鍵進行判斷,如果兩張表主鍵相同就進行數據更新,否則進行數據插入

merge into 目標數據庫需要同步的表名稱@branch b using 主數據庫需要同步的表名稱 c on(b.id=c.id)
when matched then
  update set b.name=c.name,b.age=c.age
when not matched
  then insert values(c.id,c.name,c.age);
commit;
exit;

//4、可以創建bat文件來執行merge.sql文件

技術分享圖片

創建merge.bat文件,log.txt(存儲日誌信息)

@echo off
sqlplus 用戶名/密碼@主數據庫名稱 @G:\java\merge\merge.sql > log.txt
exit

兩臺服務器不同oracle數據庫使用dblink+merge實現數據同步