如何将生产环境 Oracle 数据库某张表数据准实时复制到本地环境?

2023-05-19 15:53:52 +08:00
 la0wei
生产环境 RHEL+Oracle
本地 Windows
服务器无权限,oracle 有完整权限,但是不会操作:(

想要数据库中某张表的数据,只要最新的 45 天的,可接受手动管理删除过期数据
1.该表每天 3W 新增数据,期望获得准实时数据,如这样对数据库影响大,可以每天一次获取数据

2.该数据库另有一张表每天有 600W 新增数据,有非常明显的峰谷波动(此现象正常),有两年的历史数据,此外有其他行为读写数据库,因此希望能降低对数据库影响

3.搜索发现有个叫 ogg 的工具,但是需要在服务端安装软件,不考虑

4.曾考虑过本地自建 oracle ,将数据同步过来,但是不会操作

5.曾经听说过数据抽取这个概念,好像和我的需求吻合,但是仅限于知道这个名词。

6.需要对服务器端及数据库低操作,低负载影响

7.本地数据库无所谓 oracle 、mysql 、sql server 、sqlite 都可以

以上是我的需求,还请 v2exer 给点意见,哪怕关键词也好,谢谢大家。
1073 次点击
所在节点    Oracle
11 条回复
liprais
2023-05-19 15:55:20 +08:00
debezium cdc 拉出来呗
la0wei
2023-05-19 16:02:51 +08:00
@liprais 似乎是实时信息获取,可以抓到历史数据吗?有篇比较 ogg 和 debezium cdc 的文章,写 ogg 不需要在源端安装软件,那 ogg 似乎也可以。感谢!
la0wei
2023-05-19 16:09:45 +08:00
@liprais 我搜了下 ogg ,似乎要开启归档模式,我要去数据库验证下,有什么低侵入性的替代吗
d2moqi
2023-05-19 16:28:52 +08:00
ETL 工具 数据抽取 定时增量同步?
工具:kettle
可以了解一下
liprais
2023-05-19 16:29:54 +08:00
@la0wei xstream api 不用开归档应该,你有 ogg 应该可以直接用 debezium xstream
la0wei
2023-05-19 16:52:21 +08:00
@d2moqi ETL 这个词听说过,估计有戏:)
@liprais debezium xstream 这两个我都看看
la0wei
2023-05-19 17:17:50 +08:00
@d2moqi 看到一篇文章《超详细的六款主流 ETL 工具介绍及功能对比》,对 ETL 工具对比,声称 kettle(pantaho)对数据库表结构有要求,存在一定侵入性。对这个工具不了解,是这样的设计吗?对数据库无 /低侵入性优先,易用性第二,开源免费第三
d2moqi
2023-05-19 17:34:44 +08:00
@la0wei 只是数据同步的话我觉得是完全没有入侵性的,需要一个能同时连通 线上数据库和本地数据库的环境,然后 kettle 编辑任务(可视化编辑),读线上数据库数据 然后 处理(也可以不处理)输出到本地数据库。最简单的数据同步就完成了
bl
2023-05-19 17:43:49 +08:00
kettle
bl
2023-05-19 17:44:13 +08:00
datax
la0wei
2023-05-22 17:38:26 +08:00
@d2moqi @bl
踩坑如下,不管结果如何,记录下来,方便后来人

oralce 版本都是 11g11.2.0.1.0
服务器是 centos6
客户机是 win7
下载文件 pdi-ce-9.4.0.0-343.zip

Pentaho data integration(kettle),spoon 反正不管啥名字,这软件运行起来了,功能界面倒是很容易理解,但是在连接数据库那里卡住了

首先报错 driver class 'oracle.jdbc.driver.OracleDriver' could not be found,make sure the 'Oracle' driver (jar file) is installed.
显然没有连接驱动的关系,下载 ojdbc6.jar 放 pdi 的 bin 目录即可,需要重启软件加载。至于更高版本的 ojdbc 没有尝试。

依然连接数据库报错,特意复现了下:
Connection failed.verify all connection parameters and confirm that the appropriate driver is installed.Listener refused the connection with the following error:ORA-12505,TNS:listener does not currently know of SID given in connect descriptor
搜索才知道要在数据库名称前加 / ,不然会报 ORA-12505

以为表输入、插入更新两个步骤就行了,看报错是对 NULL 处理有问题,然后加了个 if field value is null 的步骤

但是又有问题了,插入那对 NUMBER(13,6)转换有问题,提示 java.lang.String cannot be cast to java.lang.Double

估计是在 if field value is null 的转换还是有问题。

暂时踩坑这么多,后面看情况,字段太多,每个都来一遍太累了,后面可能退而求其次直接 dump 数据库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/941299

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX