背景:項(xiàng)目中遇到的問(wèn)題,需要二區(qū)兩臺(tái)數(shù)據(jù)庫(kù)之間同步一些表,以及導(dǎo)出sql文件同步至三區(qū)數(shù)據(jù)庫(kù)。
創(chuàng)新互聯(lián)建站2013年至今,先為紅河哈尼等服務(wù)建站,紅河哈尼等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為紅河哈尼企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
新建SQL文件生成的目錄D:mptmsudataDNLTBDIR。
二區(qū)數(shù)據(jù)庫(kù)中執(zhí)行下列語(yǔ)句:
1)新建二區(qū)數(shù)據(jù)庫(kù)服務(wù)器到二區(qū)數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)庫(kù)DATABASE LINK文件。
二區(qū)數(shù)據(jù)庫(kù)中執(zhí)行下列語(yǔ)句:
2)二區(qū)數(shù)據(jù)庫(kù)服務(wù)器新建表DNL_TBJL。
二區(qū)數(shù)據(jù)庫(kù)中執(zhí)行下列語(yǔ)句:
在二區(qū)數(shù)據(jù)庫(kù)服務(wù)器說(shuō)新建相關(guān)表的觸發(fā)器,觸發(fā)器實(shí)現(xiàn)的功能是東區(qū)2區(qū)向西區(qū)直接通過(guò)DBLINK直接執(zhí)行;東區(qū)2區(qū)向東區(qū)3區(qū)通過(guò)生成SQL文件到D:mptmsudataDNLTBDIR目錄下;觸發(fā)器的每次操作都記錄到表格DNL_TBJL(id, tables,czlx, SQL, TIME, BAK)內(nèi)。
通過(guò)Windows系統(tǒng)自帶的計(jì)劃任務(wù)執(zhí)行下面批處理實(shí)現(xiàn)數(shù)據(jù)入庫(kù)
1)三區(qū)區(qū)數(shù)據(jù)庫(kù)服務(wù)器新建表DNL_SQLJL。
三區(qū)數(shù)據(jù)庫(kù)中執(zhí)行下列語(yǔ)句:
2)三區(qū)區(qū)數(shù)據(jù)庫(kù)服務(wù)器新建計(jì)劃任務(wù)定期執(zhí)行DQ3QRK-ZXWJ.bat批處理。
3)DQ3QRK-ZXWJ.bat批處理調(diào)用DQ3QRK-ZXSQL.bat來(lái)執(zhí)行入庫(kù)操作。
DQ3QRK-ZXWJ.bat語(yǔ)句如下:
DQ3QRK-ZXSQL.bat語(yǔ)句如下:
為方便完成指定數(shù)據(jù)表的同步操作,可以采用dblink與merge結(jié)合的方法完成。
操作環(huán)境: 此數(shù)據(jù)庫(kù)服務(wù)器ip為192.168.196.76,有center與branch兩個(gè)庫(kù),一般需要將center的表數(shù)據(jù)同步到branch,center為源庫(kù),branch為目標(biāo)庫(kù),具體步驟如下:
1.在源庫(kù)創(chuàng)建到目標(biāo)庫(kù)的dblink
create database link branch --輸入所要?jiǎng)?chuàng)建dblink的名稱,自定義
connect to dbuser identified by “password” --設(shè)置連接遠(yuǎn)程數(shù)據(jù)庫(kù)的用戶名和密碼
using '192.168.196.76/branch'; --指定目標(biāo)數(shù)據(jù)庫(kù)的連接方式,可用tns名稱
在創(chuàng)建dblink時(shí),要注意,有時(shí)候可能會(huì)報(bào)用戶名和密碼錯(cuò)誤,但實(shí)際上我們所輸入的賬戶信息是正確的,此時(shí)就注意將密碼的大小寫按服務(wù)器上所設(shè)置的輸入,并在賬號(hào)密碼前號(hào)加上雙引號(hào)(服務(wù)器版本不同造成的)。
2.成功后驗(yàn)證dblink
select * from tb_bd_action@branch; --查詢創(chuàng)建好的brach庫(kù)
正常情況下,如果創(chuàng)建dblink成功,可采用該方式訪問(wèn)到遠(yuǎn)程數(shù)據(jù)庫(kù)的表.
3.通過(guò)merge語(yǔ)句完成表數(shù)據(jù)同步
此例中需要將center庫(kù)中的tb_sys_sqlscripe表同步到branch,簡(jiǎn)單的語(yǔ)法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk) --從center將表merge到branch,同步的依據(jù)是兩個(gè)表的pk
when matched then update set b.sqlscripe=c.sqlscripe,b.author=c.author --如果pk值是相同則將指定表的值更新到目標(biāo)表
when not matched then --如果pk值不一至,則將源表中的數(shù)據(jù)整條插入到目標(biāo)表中
insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);
commit; --記得merge后必須commit,否則更改未能提交
4.為方便每次需要同步時(shí)自動(dòng)完成同步工作,可將該語(yǔ)句做成存儲(chǔ)過(guò)程或腳本來(lái)定時(shí)執(zhí)行或按要求手動(dòng)執(zhí)行,簡(jiǎn)單說(shuō)一下創(chuàng)建腳本的方法:
a.創(chuàng)建merge文件夾
b.先將merge語(yǔ)句寫完整后,存到merge.sql文件中
c.新建merge.bat文件,編輯后寫入以下內(nèi)容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
1.所謂的物化視圖,
2手工寫TRIGER,
3.通過(guò)ORACLE的CDC工具可以實(shí)現(xiàn)同步或者異步的表的變化。
4。關(guān)于你說(shuō)的表三和表一表二之間同步,俺沒(méi)有明白。猜測(cè)是對(duì)表一表二做ETL,然后放到表三中。只對(duì)增量進(jìn)行抽取和轉(zhuǎn)換。如果是這樣。通過(guò)上面的一二三步之一后。對(duì)增量進(jìn)行抽取和轉(zhuǎn)換。
ETL是個(gè)比較復(fù)雜也好玩的東西。多種方式可以實(shí)現(xiàn),但是相互影響較大。容易顧此失彼。比如說(shuō)管理和性能的平衡問(wèn)題就是其中之一。
網(wǎng)頁(yè)標(biāo)題:oracle之間怎么,Oracle如何
本文網(wǎng)址:http://m.rwnh.cn/article34/phpdpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、云服務(wù)器、移動(dòng)網(wǎng)站建設(shè)、做網(wǎng)站、商城網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)