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