问题标签 [oracle-cdc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
563 浏览

oracle - 如何使用同步 CDC 配置 Oracle 到 MySQL 复制而无需停机?

我正在尝试使用Tungsten Replicator 文档中概述的并行提取方法来提供 Oracle 到 MySQL 的复制。

  1. 使用 Tungsten 提供的 setupCDC.sh 脚本在 Oracle 中设置 CDC 表。
  2. 启动并行提取器,指定前面脚本给出的 CDC 进程的起始 SCN。
  3. 并行提取器将使用表单的烧瓶查询插入所有现有数据AS OF SCN ...,执行具有数据完整性的时间点供应。

问题是 setupCDC 脚本仅在 CDC 是异步的时才打印出 SCN 。在官方论坛帖子中暗示这是为了“为整个模式快照获取一个位置”。

由于许可限制,我只能使用同步CDC。手动读取all_capture表中记录的 SCN 并将其用于配置是否安全?我有哪些选择可以同时实现数据完整性和最短停机时间?

  • 一个。在配置过程中禁用对主数据库的写入操作:
    • 这是不可取的,因为我的数据库包含数百 GB 的数据,可能会导致很长的停机时间。
  • 湾。在配置期间允许写入操作:在并行提取处理完所有表后,通过正常复制重新应用所有 CDC 数据来修复任何差异。在重新申请期间出现的任何错误都必须被忽略。
    • 从数据完整性的角度来看,这是否安全?
0 投票
0 回答
622 浏览

talend - Talend 中的 Oracle CDC

我正在尝试在 Oracle 数据库上的 Talend 中设置 CDC。我正在按照此处列出的步骤操作:https ://www.talendforge.org/tutorials/tutorial.php?language=english&idTuto=42

但是,当我尝试在主数据库连接中建立 CDC 时,我收到一条消息说"Database information must be filled to use the cdc!"按钮Create Subscriber被禁用。

我可以做些什么不同的事情?我创建了两个指向同一个数据库的连接,并且还在我的主连接中检索了表模式。

0 投票
2 回答
403 浏览

informatica - Informatica:类似于 CDC,但在目标表中没有添加任何列

我在 oracle 中有一个名为 A 的源表。最初,表 A 被加载(复制)到表 B 中,接下来我在表 A 上操作 DML,如 Insert 、 Delete 、 Update 。

我们如何在表 B 中反映它?无需在目标表中创建任何额外的列。该行的时间戳不可用。

我必须比较源和目标中的行

例如:如果在源中删除了一行,那么它应该在目标中删除。如果更新了行,则在目标中更新,如果在源中不可用,则将其插入目标中。

请帮忙 !!

0 投票
0 回答
94 浏览

mysql - 克服CDC缺点

我的公司想利用变更数据捕获来代替上游系统和下游系统之间的接口文件交换。上游系统在 Oracle 数据库中运行并包含数据超集,而下游系统在 MySQL 数据库中运行并包含不完全互斥的数据子集。我们决定使用 CDC,因为我们想享受

  • 通过增量而不是全套数据传输
  • 自动数据同步
  • 如果数据传输中断自动重新发送

但是,与接口文件相比,我们发现了CDC的以下缺点

  • 从架构的角度来看太复杂了
  • 两端及中网安全控制需求高
  • 复杂的数据管理,因为不同的接收者需要不同的数据集
  • 创建单点故障
  • 与纯文本文件相比,传输的数据不透明
  • 如果同步是实时的,很难控制下游系统中数据的有效时间
  • 比文件传输成本高得多

我们怎样才能克服上述缺点?

0 投票
0 回答
673 浏览

informatica - PowerExchange CDC 10.1 for Oracle 安装

谁能提供逐步安装 PowerExchange CDC for Oracle 的过程,以便我们可以在我们的项目中实施?

0 投票
0 回答
39 浏览

informix - 除了文件或数据库之外,还有其他存储数据的选项(资源)吗?

我是 CDC(更改数据捕获)的新手。我们每分钟必须处理 1600 万笔交易。我们正在使用 IBM Informix for DB。

我的任务是添加一个将当前事务 id 存储到文件、数据库等资源的功能,并且 API 将使用这个事务 id 作为上一个事务 id 并从下一个事务 id 开始。但是存储到文件或数据库将不是一个选项,因为这些是写入文件或数据库的非常繁重的操作。

有没有其他方法来存储以前的事务 id 以提高 API 效率。

我们正在使用 Java。

0 投票
1 回答
467 浏览

talend - 如何在两个不同的 Talend 项目中使用来自 Oracle 数据库表的 CDC 更改?

我想在两个不同的 Talend 项目中使用来自 Oracle 数据库表的 CDC 更改。“Talend CDC”是否支持这样的要求?

0 投票
1 回答
423 浏览

informix - Informix CDC API 错误

我在尝试运行 Informix CDC api 时遇到错误。

  1. 我将代码https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.cdc.doc/ids_cdc_060.htm复制 到 cdcapi_INFORMIX.ec

  2. 作为 informix 用户登录运行,我收到错误 CDC_ERRORCODE = CDC_E_APIVERS 我在编译程序时收到了一些警告,但它编译成程序 CDCEXE。但似乎不起作用。谁能给我一些指示

check_version csdk 当前安装版本:3.50.FC5

ifx_getversion dmi IBM/Informix-Client SDK 版本 3.50.FC5

ifx_getversion esql IBM/Informix-Client SDK 版本 3.50.FC5 IBM/Informix 嵌入式 SQL for C 版本 3.50.FC5 版权所有 (C) 1991-2009 IBM

esql -g -static -o CDCEXE cdcapi_INFORMIX.ec /opt/inf/sdk/lib/dmi/libdmi.a “cdcapi_INFORMIX.ec”,第 492 行:警告 #2223-D:函数“ldlong”隐式声明 c_int8.data [ 0] = ldlong(databuf+INT8_LO_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 558 行:警告 #2223-D:函数“ldbigint”隐式声明 ldbigintx(&c_bigint, databuf); ^

“cdcapi_INFORMIX.ec”,第 587 行:警告 #2223-D:函数“lddecimal”隐式声明 lddecimal(databuf, Coldesc.colobj[col].colsize, &c_decimal); ^

“cdcapi_INFORMIX.ec”,第 687 行:警告 #2223-D:函数“rtypsize”隐式声明 colsize = rtypsize(sqlda->sqlvar[col].sqltype, ^

“cdcapi_INFORMIX.ec”,第 747 行:警告 #2223-D:隐式声明函数“ldlong” lsn_hi = ldlong(databuf + TRUNCATE_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 778 行:警告 #2223-D:隐式声明函数“ldlong” tabid = ldlong(databuf+TABSCHEMA_USERDATA_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 873 行:警告 #2223-D:隐式声明函数“ldlong” lsn_hi = ldlong(databuf + TXN_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 908 行:警告 #2223-D:函数“ldlong”隐式声明 lsn_hi = ldlong(databuf + DISCARD_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 947 行:警告 #2223-D:函数“ldlong”隐式声明 lsn_hi = ldlong(databuf + IUD_LSN_HI_OFFSET); ^

“cdcapi_INFORMIX.ec”,第 1019 行:警告 #2223-D:函数“ldlong”隐式声明 cur_log_header.ch_size_hdr = ldlong(a_recordbuf); ^

“cdcapi_INFORMIX.ec”,第 1342 行:警告 #2549-D:变量“recptr”在其值设置之前使用 memcpy(databuf, recptr, bytes_left_over_in_previous_buf); ^

“cdcapi_INFORMIX.ec”,第 1387 行:警告 #2223-D:函数“ldlong”隐式声明 hdrsize = ldlong(recptr);


将程序运行为

./CDCEXE -D db1 -T "bill.t1" -C "a,b" -T t2 -C "a,c" INFORMIXSERVER [server1] Connected to syscdcv1@server1 CDC_OPENSESS for server1 server1 with Timeout 300 Max recs per read 1

CDC API 'cdc_opensess' 在 cdcapi_INFORMIX.ec:1277 失败。CDCAPI_RETVAL = -83702, CDC_ERRORCODE = CDC_E_APIVERS CDC 错误描述是请求的 CDC API 行为版本无效或不受支持。

读取的总缓冲区数:0 提取的总记录数:0 每个缓冲区的平均记录数:0.000000


0 投票
1 回答
855 浏览

informatica - Informatica CDC 映射:组源获取记录缓慢

我们有 37 个 Informatica 会话,其中大多数会话平均有大约 25 个表格。很少有会话将 1 个表作为源和目标。我们的 Source 是 Oracle,target 是 Greenplum 数据库。我们正在使用安装在 Oracle 上的 Powerexchange 10.1 来获取我们更改的记录。

我们注意到,对于具有更多表的会话,获取数据并在目标中更新需要更多时间。添加更多表格是否会导致处理延迟?在那种情况下如何调整以尽可能快地获取记录?

0 投票
1 回答
508 浏览

informatica - 如何为 Powerexchange CDC 会话实施从上次检查点恢复?

我们有 37 个会话,每个会话都有 20 到 25 个表,我们的目标数据库是 Greenplum。由于在不同时间在 DB 上运行大量查询,很少有段节点出现故障,因此我们的 CDC 会话很少失败。

因此,我们计划为 CDC 会话启用从上次检查点恢复。我们是否需要在工作流中选中“启用 HA 恢复”才能使用 Resume from Last Checkpoint for Sessions?