oracle更新某个数据库,oracle 把数据库中的数据更新到另一个数据库解决思路

当前位置:我的异常网» Oracle管理 » oracle 把数据库中的数据更新到另一个数据库解决思路

oracle 把数据库中的数据更新到另一个数据库解决思路

www.myexceptions.net  网友分享于:2015-08-26  浏览:1次

oracle 把数据库中的数据更新到另一个数据库

现在有两台服务器,上面有两个独立运行的oracle,其中orc1上有的表,orc2上都有,但orc2上有的表orc1上不一定有。

现在我想定时把orc1上跑了一天的数据更新到orc2上去(每天更新一次),就是保证orc1和orc2上相同表的数据一致。需要每天来更新,想问问具体怎么整,本人菜鸟一枚,对oracle了解有限,希望大神给点意见

------解决方案--------------------

如果是mysql很好配置两个数据库之间数据的同步,可以搜“主-主备份,主从备份”,施主当前情况属于“主-从备份”。oracle的话听说过“ogg”吗,是oracle开发的一款oracle数据库之间数据同步工具,数据同步实时性很高,但该工具是要收费的,如果你两个数据库之间数据同步实时性不是很高,这就好办了!

如下方法:

1、可以写oracle脚本,从orcl1中将数据备份出来,然后将备份出来的数据导入orcl2中。

2、 程序员:自己用jdbc写一个程序,用Timer类,会定时执行的,从orcl1中将数据查出来,插入orcl2中。如果数据量特别大,oracle数据库支持批量写入,用批量写入功能即可。

3、用DBLINK(oracle一个链接其他oracle库功能),首先在orcl1中创建一个dblink,然后写存储过程,在存储过程中用dblink通道将数据倒过去。

4、ogg方式。

考虑到施主的情况,推荐使用2、3。

------解决方案--------------------

WITH WLB AS(

SELECT MATNR,BWKEY,'' AS VBELN,'' AS POSNR,

LFGJA,LFMON,VERPR,STPRS,PEINH,

VERPR*1.0/PEINH AS WLSJDJ,STPRS*1.0/PEINH AS WLBZDJ

FROM SAPSR3.MBEW

WHERE MANDT = '800'

AND  PEINH <> 0

UNION

SELECT MATNR,BWKEY,'' AS VBELN,'' AS POSNR,

LFGJA,LFMON,VERPR,STPRS,PEINH,

VERPR*1.0/PEINH AS WLSJDJ,STPRS*1.0/PEINH AS WLBZDJ

FROM SAPSR3.MBEWH

WHERE MANDT = '800'

AND  PEINH <> 0

UNION

SELECT MATNR,BWKEY,VBELN,POSNR,

LFGJA,LFMON,VERPR,STPRS,PEINH,

VERPR*1.0/PEINH AS WLSJDJ,STPRS*1.0/PEINH AS WLBZDJ

FROM SAPSR3.EBEW

WHERE MANDT = '800'

AND  PEINH <> 0

UNION

SELECT MATNR,BWKEY,VBELN,POSNR,

LFGJA,LFMON,VERPR,STPRS,PEINH,

VERPR*1.0/PEINH AS WLSJDJ,STPRS*1.0/PEINH AS WLBZDJ

FROM SAPSR3.EBEWH

WHERE MANDT = '800'

AND  PEINH <> 0

),

JHB AS(

SELECT JHD.VBELN,JHD.POSNR,JHD.VKORG,JHD.KUNNR,JHD.KUNAG,

JHD.JLFGJA,JHD.JLFMON,JHD.WADAT_IST,JHD.MATNR,JHD.ARKTX,JHD.WERKS,JHD.VRKME,JHD.NETWR,JHD.LFIMG,JHD.CK_VGBEL,

JHD.CK_VGPOS,JHD.PSTYV,JHD.BWART,JHD.SHKZG,JHD.KNTTP,JHD.MAT_KDAUF,JHD.MAT_KDPOS,

WLB.LFGJA AS WLFGJA,WLB.LFMON AS WLFMON,WLB.STPRS,WLB.VERPR,WLB.PEINH,WLB.WLBZDJ,WLB.WLSJDJ,WLB.VBELN AS TVBELN,WLB.POSNR AS TPOSNR,

(CASE WHEN JHD.LFIMG <> 0 THEN JHD.NETWR/JHD.LFIMG ELSE 0 END) AS QCBZJG,

(CASE WHEN JHD.LFIMG <> 0 THEN JHD.NETWR/JHD.LFIMG ELSE 0 END) AS QCSJJG,

(CASE WHEN JHD.VBELN <> JHD.CK_VGBEL THEN WLB.WLBZDJ ELSE (CASE WHEN JHD.LFIMG <> 0 THEN JHD.NETWR/JHD.LFIMG ELSE 0 END)END) AS QMBZDJ,

(CASE WHEN JHD.VBELN <> JHD.CK_VGBEL THEN WLB.WLSJDJ ELSE (CASE WHEN JHD.LFIMG <> 0 THEN JHD.NETWR/JHD.LFIMG ELSE 0 END)END) AS QMSJDJ,

JHD.LFIMG*WLB.WLBZDJ AS FHBZCB,

JHD.LFIMG*WLB.WLSJDJ AS FHSJCB,

JHD.LFIMG*WLB.WLSJDJ-JHD.LFIMG*WLB.WLBZDJ AS FHCY,

KPD.VGBEL,KPD.VGPOS,KPD.LFGJA,

KPD.LFMON,KPD.FKIMG,KPD.WAVWR,KPD.FKPCS,

KPD.FKIMG*WLB.WLBZDJ AS KPBZCB,

KPD.FKIMG*WLB.WLSJDJ AS KPSJCB,

KPD.FKIMG*WLB.WLBZDJ-KPD.WAVWR AS KPBZCY,

KPD.FKIMG*WLB.WLSJDJ-KPD.WAVWR AS KPSJCY

FROM

(

SELECT A.VBELN,B.POSNR,A.VKORG,A.KUNNR,A.NETWR,

A.KUNAG,A.WADAT_IST,

SUBSTR(A.WADAT_IST,1,4) JLFGJA,

SUBSTR(A.WADAT_IST,5,2) JLFMON,

B.MATNR,B.ARKTX,B.WERKS,B.VRKME,

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值