MAXOPENTCBS 系统初始化参数和 TCBLIMIT

除了您定义的 DB2CONN, DB2ENTRY和 DB2TRAN 对象外, CICS® Db2® 连接受系统初始化参数 MAXOPENTCBS 影响。 MAXOPENTCBS 控制 CICS 区域随时可操作的 L8 和 L9 方式开放式 TCB 的总数。

当 CICS 连接到 Db2 时, MAXOPENTCBS 是相关的,因为 CICS 使用 L8 和 L9 方式打开 TCB 以将线程运行到 Db2中。 L8 和 L9 方式开放式 TCB 保留供通过 OPENAPI 选项启用的任务相关用户出口使用。 其中包括与 CICS Db2 任务相关的用户出口。

在开放式事务环境中, DB2CONN 定义的 TCBLIMIT 属性控制 CICS Db2 任务相关用户出口可以使用多少 L8 和 L9 方式开放式 TCB 来运行 Db2中的线程。 如果达到 TCBLIMIT ,那么与 CICS Db2 任务相关的用户出口可以从由 MAXOPENTCBS 控制的池中获取 TCB ,但必须等待,然后才能使用 TCB 将线程运行到 Db2中。 当另一个任务停止使用其 L8 或 L9 方式 TCB 以将线程运行到 Db2中,并且正在使用的正在运行的线程数低于 TCBLIMIT 时,允许等待任务使用其自己的 L8 或 L9 方式 TCB 以将线程运行到 Db2中。 但是,如果达到 MAXOPENTCBS ,那么在 CICS 区域中不再允许 L8 和 L9 方式打开 TCB ,并且 CICS Db2 任务相关的用户出口甚至无法获取 L8 或 L9 方式 TCB 以供其使用。 它必须等到 L8 方式 TCB 或 L9 方式 TCB (由 OPENAPI 程序使用) 由另一任务释放并返回到由 MAXOPENTCBS 控制的池。 如果释放了 L8 TCB ,那么该任务可以使用此 TCB ,如果它是已释放的 L9 TCB ,那么 CICS 会 "窃取" TCB ,这意味着它会拆离 L9 TCB ,并将 L8 TCB 连接到它的位置以供该任务使用。

要确保有足够的 L8 和 L9 方式开放式 TCB 可用于满足 Db2 工作负载,请将 MAXOPENTCBS 系统初始化参数中的限制设置为大于 DB2CONN 定义的 TCBLIMIT 属性中设置的限制值。 如果 MAXOPENTCBS 低于 TCBLIMIT ,那么系统在到达 TCBLIMIT 之前可能会耗尽 L8 和 L9 方式的开放式 TCB。 当 CICS 连接到 Db2时,如果 CICS Db2 连接设施检测到 SIT 中 MAXOPENTCBS 的设置低于 DB2CONN 定义中的 TCBLIMIT 设置,那么将发出警告消息 DFHDB2211。 如果收到此警告消息,请调整 MAXOPENTCBS 限制。

此外,在事务隔离处于活动状态的情况下运行时,请将 MAXOPENTCBS 设置为最大任务数 (MXT) 或更高值。 此设置最大限度降低了由于将 TCB 分配给错误的子空间而导致 TCB 窃取的可能性。