清理正在使用 DBCTL 的事务
您可以查询和清除使用 DBCTL 的任务,将 CICS® CEMT 事务用于任何 CICS 任务。 但是,如果事务在 DBCTL 中 挂起
,并且需要将其清除,那么必须使用 DBCTL 命令 /STOP THREAD。
过程
要了解任务发生的情况,请执行以下操作:
- 发出 CEMT INQ TASK 以了解哪些任务处于活动状态。
- 通过输入 "?" 来展开有关个别任务的信息 到您要查看的任务左侧。您将获得类似于 图 1中的显示。
图 1。 CEMT INQ TASK (已展开) I TA SYNTAX OF SET COMMAND Tas(0000110) Tra(DLID) Fac(D2D3) Sus Ter Iso Pri( 001 ) Hty(DBCTL ) Hva(DLSUSPND) Hti(000007) Sta(TO) Use(CICSUSER) Rec(X'9EDA1F61E11CFA02') CEMT Set TAsk() | < All > < PRiority() > < PUrge | FOrcepurge > SYSID=CIC1 APPLID=DBDCCICS PF 1 HELP 3 END 7 SBH 8 SFH 9 MSG 10 SB 11 SF图 1 包含以下有用信息:Tas(0000110): 任务标识Tra(DLID): 任务的事务名称Fac(D2D3): 启动任务的终端或队列的标识Sus: 任务已暂挂Ter: 任务是从终端启动的Pri(001): 任务正在以优先级 1 运行Hty(DBCTL): 任务当前正在向 DBCTL 发出 DL/I 请求Hva(DLSUSPND): 任务在 DBCTL 中暂挂Hti(000007): 任务已暂挂的时间 (以秒计)Sta(TO): 任务的启动方式 ;TO 表示操作员从终端输入事务Use(CICSUSER): 是启动任务的用户的用户标识Rec(X'9EDA1F61E11CFA02'): 显示与任务关联的恢复令牌- 屏幕还包含 CEMT SET TASK 命令语法的提示,您可能需要使用这些提示; 例如,如果要清除暂挂的任务。
SYSID=CIC1: CICS 系统标识,如系统初始化参数 SYSIDNT 中所指定。APPLID=DBDCCICS: CICS 系统的 APPLID。
- 再次发出 CEMT INQ TASK 。
- 如果响应指示该任务在 DBCTL 中不再处于暂挂状态,那么可以使用 CEMT SET TASK(n) PURGE 对任何 CICS 任务将其清除。 在完成对 DBCTL 的 DL/I 请求后执行清除。
- 如果响应指示该任务在 DBCTL 中仍处于暂挂状态,那么该任务在 DBCTL 中已
挂起
,您必须使用 DBCTL 操作员命令来将其清除。
要清除 DBCTL 中 挂起
的事务,请执行以下操作:
- 从 CEMT INQ TASK 屏幕,记下 CICS APPLID 和 16 位恢复令牌。 您可以使用恢复令牌在 DBCTL 中查找 CICS 任务的线程号。 有关更完整的定义,请参阅 CICS DBCTL 恢复令牌。
- 在 DBCTL 控制台上,输入
/DISPLAY CCTL cctlname,其中 cctlname 是 CICS APPLID (在此示例中,它是 DBDCCICS)。这将导致显示 DL/I 活动的当前状态,如 图 2中所示。图 2。 来自 /DISPLAY CCTL cctlname 的输出 0080 /DIS CCTL DBDCCICS 0080 DFS000I MESSAGE(S) FROM ID=SYS1 047 0080 CCTL PSEUDO-RTKN RECOVERY-TOKEN REGID PSBNAME STATUS 0080 DBDCCICS ATTACHED 0080 9EDA1F61E11CFA02 6 PC3COCHD ACTIVE 0080 9EDA1F4E9B571B02 5 PC3COCHD ACTIVE 0080 *88204/101241* - 查找与您从 CEMT INQ TASK 屏幕中记录的恢复令牌 (在此示例中为9EDA1F61E11CFA02 ) 匹配的恢复令牌,然后在 REGID 列中记录该恢复令牌旁边的线程号 (在此示例中为 6)。
- 发出命令:
/STOP THREAD n ABDUMP其中 n 是线程号。
这将导致线程和事务在完成处理当前请求时终止,并导致执行转储。
如果线程未停止,请使用以下命令:/STOP THREAD n CANCEL警告: 如果不需要,请勿使用 /STOP THREAD CANCEL ,因为这可能会导致 DBCTL 终止,并导致 U113 异常终止。