CDC 捕获方法操作注意事项
了解 SQL Server CDC Capture 选项、功能和建议的设置。
优化 SQL Server 更改数据捕获
以下信息有助于提高提取的捕获性能。
-
对于远程部署,低网络延迟非常重要,建议 Oracle GoldenGate 服务器与源数据库服务器之间的网络延迟小于 1 毫秒。
-
确保为数据库启用了“Auto Create Statistics(自动创建统计信息)”和“Auto Update Statistics(自动更新统计信息)”。维护
cdc.OracleGG_#####_CT tables、cdc.lsn_time_mapping table和OracleGGTranTables表上的统计信息对于提取的性能和延迟至关重要。 -
SQL Server Change Data Capture 作业从 SQL Server 事务处理日志中收集数据,并将其加载到数据库中的 Change Data Capture 中转表。
在创建的作业中,可以使用多个可用的优化参数,有关如何最好地优化作业的信息,请参见以下文章:https://technet.microsoft.com/en-us/library/dd266396(v=sql.100).aspx
作为一般建议,应将 SQL Server 更改数据捕获作业轮询间隔从默认值 5 秒更改为 1 秒。
要更改 CDC Capture 作业的默认轮询间隔,请对数据库执行以下查询:
EXEC [sys].[sp_cdc_change_job] @job_type = N'capture', @pollinginterval = 1, GO, --stops cdc job EXEC [sys].[sp_cdc_stop_job], @job_type = N'capture', GO, --restarts cdc job for new polling interval to take affect EXEC [sys].[sp_cdc_start_job], @job_type = N'capture',
Oracle GoldenGate CDC 对象版本控制
Oracle GoldenGate 提供了一个版本跟踪子系统,用于跟踪在启用补充日志记录时 Oracle GoldenGate 创建的 CDC 对象。下列对象为:
-
Oracle GoldenGate 更改跟踪表,格式为
OracleGG_object id_CT. -
以
fetch_database name_object id格式存储过程 -
存储过程
OracleCDCExtract、OracleGGCreateProcs和OracleGGCreateNextBatch。 -
成功完成
ADD TRANDATA命令后,Oracle GoldenGate 将在 GLOBALS 文件中指定的GGSCHEMA下创建一个名为OracleGGVersion的表(如果该表尚不存在)。接下来,Oracle GoldenGate 会向表中插入一条记录,以跟踪
TRANDATA会话的开始和结束时间。提取启动时,它将通过将其内部版本号与OracleGGVersion表中的版本号进行比较,检查自身与 Oracle GoldenGate CDC 对象之间的一致性。如果发现版本号不匹配,则会异常终止,并显示类似以下内容的消息:ERROR OGG-05337 The Oracle GoldenGate CDC object versions on database, source, are not consistent with the expected version, 6. The following versions(s) were found: 3. Rerun ADD TRANDATA for all tables previously enabled, including heartbeat, heartbeat seed, and filter tables.
SQL Server 更改数据捕获的支持和不支持的提取参数
了解用于 CDC 提取的参数。下表列出了支持和不支持的参数。
| 支持的参数 | 参数不受支持 |
|---|---|
TRANLOGOPTIONS |
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT/NOMANAGESECONDARYTRUNCATIONPOINT/ACTIVESECONDARYTRUNCATIONPOINT |
ALWAYSONREADONLYROUTING |
- |
TRANLOGOPTIONS LOB_CHUNK_SIZE |
- |
TRANLOGOPTIONS MANAGECDCCLEANUP/NOMANAGECDCCLEANUPTRANLOGOPTIONS |
- |
TRANLOGOPTIONS QUERYTIMEOUT |
- |
TRANLOGOPTIONS TRANCOUNT |
- |
事务处理日志选项 LOB_CHUNK_SIZE
为 CDC Capture 方法添加了提取参数 LOB_CHUNK_SIZE 以支持大型对象。如果 LOB 数据大小很大,则可以将 LOB_CHUNK_SIZE 从 4000 字节的默认值调整为 65535 字节以内的较高值,从而增加提取大小,从而减少提取整个 LOB 所需的行程。
示例:TRANLOGOPTIONS LOB_CHUNK_SIZE 8000
TRANLOGOPTIONS MANAGECDCCLEANUP/NOMANAGECDCCLEANUP
CDC Capture 方法使用 Extract 参数 MANAGECDCCLEANUP/NOMANAGECDCCLEANUP 指示 Extract 是否维护 Oracle GoldenGate CDC Cleanup 作业中的恢复检查点数据。将维护恢复检查点,但如果未启用 SQL Server CDC 清除作业,则不会清除 ct 表。清除时需要指定此值。
默认值为 MANAGECDCCLEANUP,且不必在提取中显式列出。但是,它确实需要在启动提取之前创建 Oracle GoldenGate CDC 清除作业。MANAGECDCCLEANUP 应用于所有生产环境,其中 NOMANAGECDCCLEANUP 可用于临时实施并根据需要测试实施。
示例:TRANLOGOPTIONS MANAGECDCCLEANUP
事务处理日志选项排除用户/排除项
SQL Server CDC Capture 作业不捕获与事务处理关联的用户信息或事务处理名称,并且由于此信息未记录在 CDC 中转表中,Extract 没有从特定用户或特定事务处理名称的 DML 中排除 DML 的方法。因此,EXCLUDEUSER 和 EXCLUDETRANS 参数对 CDC Capture 进程无效。
TRANLOGOPTIONS 管理 ECONDARYTRUNCATIONPOINT/NOMANAGESECONDARYTRUNCATIONPOINT/ACTIVESECONDARYTRUNCATIONPOINT
SQL Server 更改数据捕获作业是使用 Oracle GoldenGate CDC Capture 方法从事务处理日志中捕获数据的唯一进程。提取未处理辅助截断点管理,对于更改数据捕获提取,这些参数无效。
事务日志选项始终只读
ALWAYSONREADONLYROUTING 参数允许 Extract for SQL Server 在连接到 Always On 可用性组监听程序时将其只读处理路由到可用的只读辅助服务器。
事务处理日志选项查询超时
指定对 SQL Server 的查询在报告超时错误消息之前等待结果的时间。此选项接受一个整数值来表示秒数。默认查询超时值是 300 秒(5 分钟)。最小值为 0 秒(无限超时)。最大值是 2147483645 秒。
事务处理日志选项批次款项
允许通过提取调整每次调用处理的事务数,以从 SQL Server 更改数据捕获分段表中提取数据。根据您的事务处理工作量,调整此值可能会提高捕获速率吞吐量,但并非所有工作量都会受到积极影响。最小值为 1,最大值为 100,默认值为 10。
Oracle GoldenGate CDC 清除流程的详细信息
默认情况下,CDC 提取需要 Oracle GoldenGate 清除更改数据任务,因为“提取”默认为 TRANLOGOPTIONS MANAGECDCCLEANUP。
对于为 CDC Capture 启用的每个数据库,应该只有一个清除任务,您必须使用本文档的为 Oracle GoldenGate 准备数据库部分中提到的步骤来创建任务。
修改 Oracle GoldenGate 清除更改数据任务
Oracle GoldenGate 清除更改数据任务的默认清除任务频率调度和数据保留期是每 10 分钟运行一次,数据保留策略为 3 天或 1 小时,具体取决于安装的 Oracle GoldenGate 版本。
对于特定于客户的要求,可能需要调整保留期(保留规则选项)和任务运行时计划(清除频率选项)。
保留规则选项确定要保留在源数据库中的 CDC 暂存数据量(以小时或天为单位)。根据安装的 Oracle GoldenGate 版本,默认值为 3 天或 1 小时。较低的 CDC 数据保留期可减少数据库中存储的 CDC 中转数据量,但限制用户将提取重新定位回比中转表中存在的数据更早的时间的能力。通常,不需要将现有提取重新定位回较早的时间点,因此建议使用较新的默认设置 1 小时,除非存在需要将更多中转数据保留在数据库中的特定情况。请注意,如果将此值从较高的保留期更改为非常短的保留期,则下次运行任务计划时,可能会占用大量事务处理日志空间和系统开销。因此,建议随着时间的推移慢慢减小 Keep Rule 值,直到达到所需的结束值。
清除频率表示任务的运行频率,默认值为每 10 分钟。建议保留默认值,除非清除任务的开销在高用户活动期间影响数据库性能。
要修改现有的“清除更改数据”任务,请从管理服务左侧的菜单中导航到配置,以打开配置页。1。单击配置页中的任务以打开任务页。
-
单击任务页中的清除更改数据。
-
单击现有任务旁边的更改任务图标。
-
根据需要修改保留规则和清除频率选项的值。
-
单击 Submit(提交)保存更改。
删除 Oracle GoldenGate 清除更改数据任务
只有在没有根据特定数据库配置要捕获的提取时,才应删除数据库的“清除更改数据”任务。
要删除现有的“清除更改数据”任务,请从管理服务左侧的菜单中导航到配置选项,以打开配置页。1。单击配置页中的任务以打开任务页。
-
单击任务页中的清除更改数据。
-
单击要删除的任务旁边的删除任务图标。
从经典提取更新到 CDC 提取
如果您计划从 Oracle GoldenGate 12c (12.3.0.1) 或更早版本使用经典提取到 Oracle GoldenGate 26ai CDC 提取,则必须删除使用经典提取安装方法实施的补充日志记录,并使用 CDC Extract 安装二进制文件重新启用补充日志记录,因为两个版本之间对启用 TRANDATA 的调用不同,并且 CDC Extract 不支持对经典提取执行 TRANDATA。
请遵循以下一般准则来删除和重新启用补充日志记录。如果在生产系统中从 Classic 迁移到 CDC Extract,则应特别考虑和规划。此处提供的信息不涵盖所有要求,仅作为补充日志记录的一般要求提供:
-
确保经典提取已处理了日志中的所有剩余数据,并且可以正常停止。
-
根据提取与其他复制或 CDC 组件相关的运行方式,执行以下操作之一:
-
如果 Extract 未与 SQL Server 事务处理复制或同一数据库上的非 Oracle CDC 配置同时运行,请在 Management Studio 中打开查询会话,并对源数据库发出以下语句以禁用和删除任何 CDC 或复制组件,并清除辅助截断点。
EXEC sys.sp_cdc_disable_db -
如果 Extract 与 SQL Server 事务处理复制或同一数据库上的非 Oracle CDC 配置同时运行,请从 Classic Extract 的安装文件夹运行管理客户机,使用
DBLOGIN登录到源数据库,然后针对 Extract 配置中的每个表发出以下命令。可以使用通配符来指定多个表名DELETE TRANDATA owner.tableDELETE TRANDATA owner.*
-
-
删除任何心跳表条目(如果已安装)。
DELETE HEARTBEATTABLE -
使用 Oracle GoldenGate CDC Extract 安装二进制文件,按照 Prepare the Database for Oracle GoldenGate 中列出的步骤重新启用补充日志记录和其他必要的组件,然后重新添加心跳表。