oracle資料庫之間資料同步

2022-08-12 14:30:18 字數 1784 閱讀 3389

這段時間負責某個專案開發的資料庫管理工作,這個專案中開發庫與測試資料庫分離,其中某些系統表資料與基礎資料資料經常需要進行同步,為方便完成指定資料表的同步操作,可以採用dblink與merge結合的方法完成,簡單方便。

操作環境: 此資料庫伺服器ip為192.168.196.76,有center與branch兩個庫,一般需要將center的表資料同步到branch,center為源庫,branch為目標庫,具體步驟如下:

1.在源庫建立到目標庫的dblink

create database link branch     --輸入所要建立dblink的名稱,自定義 

connect to dbuser identified by 「password」  --設定連線遠端資料庫的使用者名稱和密碼 

using '192.168.196.76/branch';  --指定目標資料庫的連線方式,可用tns名稱

在建立dblink時,要注意,有時候可能會報使用者名稱和密碼錯誤,但實際上我們所輸入的賬戶資訊是正確的,此時就注意將密碼的大小寫按伺服器上所設定的輸入,並在賬號密碼前號加上雙引號(伺服器版本不同造成的)。

2.成功後驗證dblink

正常情況下,如果建立dblink成功,可採用該方式訪問到遠端資料庫的表.

3.通過merge語句完成表資料同步

此例中需要將center庫中的tb_sys_sqlscripe表同步到branch,簡單的語法如下:

merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk)  --從center將表merge到branch,同步的依據是兩個表的pk

when matched then  update set b.sqlscripe=c.sqlscripe,b.author=c.author  --如果pk值是相同則將指定表的值更新到目標表

when not matched then                                --如果pk值不一至,則將源表中的資料整條插入到目標表中

insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);

commit;               --記得merge後必須commit,否則更改未能提交

4.為方便每次需要同步時自動完成同步工作,可將該語句做成儲存過程或指令碼來定時執行或按要求手動執行,簡單說一下建立指令碼的方法:

a.建立merge資料夾

b.先將merge語句寫完整後,存到merge.sql檔案中

c.新建merge.bat檔案,編輯後寫入以下內容

當執行merge.bat時就會自動完成所指定不同資料庫間的同步工作

oracle資料庫之間資料同步

這段時間負責某個專案開發的資料庫管理工作,這個專案中開發庫與測試資料庫分離,其中某些系統表資料與基礎資料資料經常需要進行同步,為方便完成指定資料表的同步操作,可以採用dblink與merge結合的方法完成,簡單方便。操作環境 此資料庫伺服器ip為192.168.196.76,有center與bran...

Oracle資料庫之間資料同步

源庫 env庫 中定義如下包 包定義如下 create or replace package pkg data report is author johnfnash created 2017 6 8 17 48 03 purpose data report to yw 資料同步儲存過程 proced...

Oracle資料庫之間資料同步

源庫 env庫 中定義如下包 包定義如下 create or replace package pkg data report is author johnfnash created 2017 6 8 17 48 03 purpose data report to yw 資料同步儲存過程 proced...