oracle資料同步

2021-08-31 17:17:12 字數 1594 閱讀 8517

**:

首先建立乙個 dblink(database link)

sql**  

create

database

link kings   

--dblink 的名字,同步的時候要用到這個名字,可以隨便取

connect

tokings   

--連線到那個資料庫的使用者名稱

identified by

kings123  

-- 連線那個資料庫的密碼

using '(description =  

(address = (protocol = tcp)(host = 192.168.1.75)(port = 1521))  

(connect_data =  

(server = dedicated)  

(service_name = xe)  

)  )';  

-- 上邊的 host 是連線資料庫的 ip ,port 是埠號,要沒改過的話就是 1521

有了 kings(dblink),我們就可以實現資料同步的工作了,通過觸發器來實現

先說下場景,假如我們現在要做個同步的功能,在操作表as_emp的時候

1、新增:同樣往 192.168.1.75 那個資料庫裡的empinfo新增一條記錄(通過 empinfo@kings  表名@dblink 的方式訪問)

2、更新:在更新as_emp.emp_code的時候,把這個欄位的資料更新到empinfo.pass裡去(當然你也可以做刪除的操作...我這個業務裡沒這個需求)

sql**  

create

orreplace

trigger

syn_as_emp  

after

insert

orupdate

onas_emp  

foreach row  

begin

case

when

inserting 

then

insert

into

empinfo@kings(userid,pass) 

values

(:new.emp_code,:new.emp_name);  

when

updating 

then

update

empinfo@kings 

setpass=:new.emp_name 

where

userid=:new.emp_code;  

endcase

;  end

;  後邊我突然想到了個問題,建立dblink的**應該要寫到觸發器裡,先得確保有了觸發器才能執行同步的操作呀,要不然資料庫每次啟動以後,連線就斷了的!

我按照程式的思想想寫個 trycatch()... 可怎麼都寫不了,突然看到有個地方說刪除 dblink的命令是 drop database link dblink名字

我就覺得自己想太多了,用到 drop 的地方,就像表啊什麼的,已經寫到庫里的,是肯定存在的,於是我嘗試著重啟資料庫,果然,只要 dblink 沒被刪除,再資料庫起來的時候 dblink 就存在了

ORACLE 資料同步

這是我之前做過的資料庫同步的問題,最近老是看到有人在csdn裡問資料庫同步的問題,所以我就想把我的實現方案共享一下。多多交流。用到的表是我臨時建立的表。有不妥之處請見諒,畢竟是免費的東西。在本地建立兩張表 t1,t2 這兩張表和遠端的表結構一樣,通過觸發器實現資料的同步,然後對本地的兩張表進行物化,...

oracle資料同步例項

建立dblink create database link db117 例項 connect to test u identified by test u using description address list address protocol tcp host 192.168.1.117 p...

Oracle 自動同步資料指令碼

前段時間在處理乙個生產異常的時候發現,我們的測試資料庫和 資料庫已經很久都沒有同步生產上的資料了。我們開發人員在處理異常的時候往往要模擬一條資料來進行除錯,若遇到需要大量接近生產的基礎資料進行除錯的時候就比較痛苦了。而目前遇到這種情況則需要實施人員到生產資料庫備份資料,通過oracle匯出將資料導成...