1、物化視圖
創(chuàng)新互聯(lián)建站專注于陽城網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供陽城營銷型網(wǎng)站建設,陽城網(wǎng)站制作、陽城網(wǎng)頁設計、陽城網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務,打造陽城網(wǎng)絡公司原創(chuàng)品牌,更為您提供陽城網(wǎng)站排名全網(wǎng)營銷落地服務。
2、dataguard
3、rman增量導入
4、找開發(fā)商取出每天的增量數(shù)據(jù)導入備庫。
5、每天全庫的導出導入
當然了,最后一種方法完全不用考慮(雖然操作過程簡單,但數(shù)據(jù)量大的話相當耗時,而且實時性就沒辦法咯),(方案四是要收費滴)。o(∩_∩)o
如果你的備庫只需要進行查詢操作,那么以上方案均可考慮(注意用方案二的話數(shù)據(jù)庫版本只能是oracle11以上,這樣備庫才能open);如果你的備庫還需要進行修改等的其他操作的話那么建議采用方案一或方案四。
以上方案實時性最好的是方案二其次是方案一。其它幾個方案實時性較差。
stream,dataguard,Golden Gate
stream 現(xiàn)在oracle已經(jīng)不再提供技術(shù)支持,
所以推薦使用dataguard,通過log日志傳輸保證主備庫數(shù)據(jù)一致性,文檔較多。
而golden gate是oracle另一款數(shù)據(jù)同步工具,需要license。實驗可以考慮使用。
1、數(shù)據(jù)量不大的話,比如整體小于10G,你可以在主機訪問量小時或者shutdown時將oracle打包。例如:tar zcf /opt/u02.gz /u02,然后將u02.gz文件scp到備機。
2、如果數(shù)據(jù)量很大,你可以用rsync同步到備機
3、配置主備無密碼互訪
4、添加計劃任務
crontab -e
0 4 * * * /opt/rsync_ora.sh;
rsync_ora.sh內(nèi)容:
#!/bin/sh
rsync -av '-e ssh -p 22' /u02/oracle oracle@172.16.1.2:/u02
rsync -av '-e ssh -p 22' /data1/oracle oracle@172.16.1.2:/data1
首先在ORACLE_B上做dblink連接ORACLE_A,然后做個存儲過程,大致如下:找到table_db主鍵,select 主鍵 from table_db@dblink minus select table_db from table_db找到差異數(shù)據(jù),然后插入到oracle_b,再寫個job.定時執(zhí)行這個存儲過程
為方便完成指定數(shù)據(jù)表的同步操作,可以采用dblink與merge結(jié)合的方法完成。
操作環(huán)境: 此數(shù)據(jù)庫服務器ip為192.168.196.76,有center與branch兩個庫,一般需要將center的表數(shù)據(jù)同步到branch,center為源庫,branch為目標庫,具體步驟如下:
1.在源庫創(chuàng)建到目標庫的dblink
create database link branch???? --輸入所要創(chuàng)建dblink的名稱,自定義?
connect to dbuser identified by “password”? --設置連接遠程數(shù)據(jù)庫的用戶名和密碼?
using '192.168.196.76/branch';? --指定目標數(shù)據(jù)庫的連接方式,可用tns名稱
在創(chuàng)建dblink時,要注意,有時候可能會報用戶名和密碼錯誤,但實際上我們所輸入的賬戶信息是正確的,此時就注意將密碼的大小寫按服務器上所設置的輸入,并在賬號密碼前號加上雙引號(服務器版本不同造成的)。
2.成功后驗證dblink
select * from tb_bd_action@branch; --查詢創(chuàng)建好的brach庫
正常情況下,如果創(chuàng)建dblink成功,可采用該方式訪問到遠程數(shù)據(jù)庫的表.
3.通過merge語句完成表數(shù)據(jù)同步
此例中需要將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,同步的依據(jù)是兩個表的pk
when matched then? update set b.sqlscripe=c.sqlscripe,b.author=c.author? --如果pk值是相同則將指定表的值更新到目標表
when not matched then ? --如果pk值不一至,則將源表中的數(shù)據(jù)整條插入到目標表中
insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);
commit;?????????????? --記得merge后必須commit,否則更改未能提交
4.為方便每次需要同步時自動完成同步工作,可將該語句做成存儲過程或腳本來定時執(zhí)行或按要求手動執(zhí)行,簡單說一下創(chuàng)建腳本的方法:
a.創(chuàng)建merge文件夾
b.先將merge語句寫完整后,存到merge.sql文件中
c.新建merge.bat文件,編輯后寫入以下內(nèi)容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
首先在ORACLE_B上做dblink連接ORACLE_A,然后做個存儲過程,大致如下
找到table_db主鍵
select 主鍵 from table_db@dblink minus select table_db from table_db找到差異數(shù)據(jù)
然后插入到oracle_b,再寫個job.定時執(zhí)行這個存儲過程
天互數(shù)據(jù) 為您解答,希望能幫到你