oracle數據庫之間數據同步


這段時間負責某個項目開發的數據庫管理工作,這個項目中開發庫與測試數據庫分離,其中某些系統表數據與基礎資料數據經常需要進行同步,為方便完成指定數據表的同步操作,可以采用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名稱
image 在創建dblink時,要注意,有時候可能會報用戶名和密碼錯誤,但實際上我們所輸入的賬戶信息是正確的,此時就注意將密碼的大小寫按服務器上所設置的輸入,並在賬號密碼前號加上雙引號(服務器版本不同造成的)。
2.成功后驗證dblink
select * from tb_bd_action@branch;
image
正常情況下,如果創建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,否則更改未能提交
image
4.為方便每次需要同步時自動完成同步工作,可將該語句做成存儲過程或腳本來定時執行或按要求手動執行,簡單說一下創建腳本的方法:
a.創建merge文件夾
b.先將merge語句寫完整后,存到merge.sql文件中
c.新建merge.bat文件,編輯后寫入以下內容
  sqlplus user/password@serverip/database @"%cd%\merge.sql"
image
當運行merge.bat時就會自動完成所指定不同數據庫間的同步工作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM