DB2 中的锁是在表和表空间上获取的,以避免由于 LOST UPDATE、DIRTY READ 和 PHANTOM 引起的问题。
我们需要在 BIND 包/计划步骤期间使用 ACQUIRE 选项定义锁定参数。
一个 COBOL-DB2 程序 PROGA 正在使用 SQL 语句来访问表 TA。如果我们只在程序中执行特定的 SQL 语句时才需要在表上加锁,那么我们需要定义 BIND JCL 步骤如下:
//BIND EXEC PGM=IKJEFT01 //STEPLIB DD DSN=DIS.TEST.LOADLIB,DISP=SHR //系统输出 DD 系统输出=* //SYSTSIN DD * DSN SYSTEM(TB3) BIND PLAN(PLANA) - PKLIST(PACKA) - ACQUIRE(USE) - /*
选项 ACQUIRE 必须与 BIND PLAN 步骤中的 USE 参数一起使用。当在程序中执行使用该表的 SQL 语句时,这将指示 DB2 将锁放在 DB2 表上。