当前位置:我的异常网» 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,
文章评论