oracle 一種簡單的資料同步方式

2021-06-23 06:39:01 字數 1755 閱讀 8497

在兩個oracle資料庫之間資料同步是乙個常見的需求,比如同乙個開發商開發了hr系統和其他各類業務系統,而各類業務系統如需共享hr人員資訊與及組織機構等基本資訊,可採用資料同步(當然不同的開發商的系統之間或者大型系統也可以開發webservice介面。基於spring框架還可以使用httpinvoker做介面)

資料同步的原理是:在原庫建立dblink,連線到新庫。同時在原庫建立觸發器,一旦原庫中的需要同步的資料表發生變化,可按觸發器的邏輯將資料同步到新庫中。

步驟如下(見**):

1、原庫中建立dblink

create public database link testdb  connect to username identified by password

using '(description =

(address_list =

(address = (protocol = tcp)(host = 新庫ip)(port = 1521))

)(connect_data =

(service_name =服務名)

))';

(注意:新增

public

其他使用者也可以使用該

dblink)

附: 查詢dblink:

select

* from

dba_db_links

刪除dblink

drop

public

database

link testdb

2、資料跨庫更新或叫資料初始化(以user表為例)

查詢列名:

select

wmsys.wm_concat(column_name) from

user_tab_columns@testdb

where

table_name='user';

將列名複製貼上到要更新的列

跨庫插入:

insert

into

user@testdb (列名1,列名2

) select 列名1,列名2 from user

3、建立觸發器,同步更新資料

create or replace trigger tri_user

after insert or update or delete on user_info

for each row

declare

-- local variables here

begin

if inserting then

insert into user@testdb (id,emplevel,birth,email,……)

values(:new.id,:new.leaderlevel,:new.birth,:new.email,……);

elsif updating then

update user@testdb set id=:new.id,emplevel=:new.leaderlevel,birth=:new.birth,email=:new.email, …… where id=:old.id;

elsif deleting then

delete from user@testdb where id=:old.id;

end if;

end tri_user;

大家可根據需要來書寫自己的觸發器,以上的步驟就完成了乙個簡單的oracle資料同步。

約瑟夫環的一種簡單解法

首先還是描述一下約瑟夫環問題吧 n個人圍成乙個圈,從第乙個人開始數數 從1開始數 每數到3 當然這個數字可以隨便定 數到3的那個人就退出,接著,他的下乙個人又從1開始數.迴圈不斷,剩下的k個人就是勝利者 當人,這個人數也可以隨便定 接下來的 是利用乙個陣列模擬環,對該陣列進行相應的操作,如果數到3,...

體積霧的一種簡單實現

場景裡面一開始加的是預設的opengl霧效,效果不太好,看起來立體感不強,然後打算加個體積霧效果,搜了一些體積霧的實現方式,發現略複雜,就想了種比較簡單的實現方式 1 在場景的垂直高度上,一般是z軸,建立若干個水平的平面,大小要比場景大,疊在一起之後看起來效果類似乙個立方體 我是從z的 5到20,建...

有一種生活叫簡單

有一種時候要買單。朋友至遠方來見你,即使你荷包空空最近是兩袖清風,還是 要攔著他掏錢包的手大義的說 算我的。其實心裡正流血不止。和女孩子約會,骨瘦如 柴的男人也能變了胖子,身材如此錢包亦如此,不然這臉往 放?下次絕對不會有女 人再正眼看你。形容你的也只有兩個字 小氣!有一種情況叫落單。當你站在大街上...