TRANSACTIONTIMEOUT

有效对象

复制

说明

使用 TRANSACTIONTIMEOUT 参数可防止未提交的复制目标事务处理在目标表上存放锁,并且不必要地占用数据库资源。您可以更改此参数的值,以便 Replicat 可以在目标上的现有应用程序超时和其他数据库要求内工作。

如果某个目标事务处理未收到该事务处理中最后一个源事务处理的事务处理结束记录,则 TRANSACTIONTIMEOUT 会限制 Replicat 将其保持打开状态的时间量。默认情况下,复制会将多个源事务处理分组到一个目标事务处理中以提高性能,但它不会提交部分源事务处理,并且将无限期地等待该最后一条记录。Replicat 参数 GROUPTRANSOPS 控制分组目标事务处理的最小大小。范围为 1-604800。

以下事件可能持续足够长的时间来触发 TRANSACTIONTIMEOUT:

TRANSACTIONTIMEOUT 的工作原理

在正常操作期间,Replicat 会记住当前目标事务处理中第一个源事务处理开始的线索中的位置,以防必须异常终止并重试该事务处理。启用 TRANSACTIONTIMEOUT 时,Replicat 还会保存当前源事务处理的第一个记录的位置,并在触发 TRANSACTIONTIMEOUT 时使用该位置作为逻辑文件末尾 (EOF)。

触发后,TRANSACTIONTIMEOUT 将执行以下操作:

  1. 中止当前目标事务处理

  2. 重新定位到中止的目标事务处理中第一个源事务处理的开头。

  3. 处理到逻辑文件末尾位置(最后一个不完整的源事务处理的开头)的所有线索记录。

  4. 在逻辑 EOF 点提交事务处理。

  5. 在处理任何其他线索记录之前等待新的线索数据。

对于同一源事务处理,可以多次触发 TRANSACTIONTIMEOUT,具体取决于导致线索数据到达缓慢到足以触发 TRANSACTIONTIMEOUT 的问题的性质。

检测 TRANSACTIONTIMEOUT 条件

要确定在启用 TRANSACTIONTIMEOUT 时复制是否正在等待源事务处理的其余部分,请发出带有 STATUS 选项的 SEND REPLICAT 命令。以下状态指示此条件:

Performing transaction timeout recovery
Waiting for data at logical EOF after transaction timeout recovery

默认值

已禁用

语法

TRANSACTIONTIMEOUT <n> <units>

<n>

指定等待间隔的整数。有效值从 1 秒到 1 周(7 天)。此值应大于主提取和任何关联数据泵中使用 EOFDELAY 参数设置的值。

<units>

以下项之一:S, SEC, SECS, SECOND, SECONDS, MIN, MINS, MINUTE, MINUTES, HOUR, HOURS, DAY, DAYS。

示例

TRANSACTIONTIMEOUT 5 S