有两个oracle数据库A、B,现在我要将A库的table1表中的数据同步到B库具有相同表结构的table1表中,请问实现两库之间的数据同步?可以定时自动更新数据更好
为æ¹ä¾¿å®ææå®æ°æ®è¡¨çåæ¥æä½ï¼å¯ä»¥éç¨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
select * from tb_bd_action@branch; --æ¥è¯¢å建好çbrachåº
æ£å¸¸æ åµä¸ï¼å¦æå建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æ件ï¼ç¼è¾ååå ¥ä»¥ä¸å 容
sqlplus user/password@serverip/database @"%cd%\merge.sql"
A、B数据库中的每张表都有各自的用户表空间,利用exp命令导出的数据,每条数据前跟有用户名,若进行修改,对于数据量大的数据库,工作量太大了,而且利用exp及imp命令获取数据,速度缓慢
追答每张表都有各自的用户表空间?!窘!你之前的问题没这么复杂哦。
实在不行就自己编个程序,想咋整就咋整。