配置CICS
Forked from http://gejoin.com/2016/01/02/CICS-management-tips.html
配置 CICS REGION:
代码语言:javascript复制cicscp -v start sfs_server SFS_NAME
cicscp -v create region REGION_NAME DefaultFileServer=
配置 RD:
代码语言:javascript复制cicsupdate -c rd -r REGION_NAME XPRecvTimeout=300
cicsupdate -c rd -r REGION_NAME MinServer=30
cicsupdate -c rd -r REGION_NAME MaxServer=80
cicsupdate -c rd -r REGION_NAME MaxRegionPool=62914560
cicsupdate -c rd -r REGION_NAME MaxTaskPrivatePool=20971520
cicsupdate -c rd -r REGION_NAME MaxTSHPool=41943040
cicsupdate -c rd -r REGION_NAME TraceFlagMaster=on
cicsupdate -c rd -r REGION_NAME TraceFlagSystem=on
cicsupdate -c rd -r REGION_NAME TraceFlagUser=on AllowDebugging=yes
其中 REGION_NAME 需更改为您的 CICS REGION 名称。
配置 LD:
代码语言:javascript复制cicsadd -c ld -r REGION_NAME LD1 TCPAddress="backend_server" TCPService="tran-host" SNAServerTransport=TCP
其中 backend_server 是后端服务器的 IP 地址。
添加以下行以编辑 /etc/services
文件:
tran-host port_number/tcp
其中 port_number
是端口号。请确保此端口号与 /etc/services
文件中的其他端口号不冲突。
配置环境变量:
添加以下行,编辑/var/cics_regions/REGION_NAME/environment
COBPATH=/user/bin:/usr/lpp/cobol/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11
CICS_PROGRAM_PATH=/home/cbod/cbodload/load:/usr/lpp/cics/lib:.
DB2INSTANCE=db2inst1
COB_CPM_SIZE_MAX=0
EXTSHM=ON
DB2NOEXITLIST=ON
配置 WD:
代码语言:javascript复制cicsupdate -c wd -r REGION_NAME MDCL Permanent=no RecoverTerminal=no
cicsupdate -c wd -r REGION_NAME MDCI Permanent=no RecoverTerminal=no 配置WD
配置 TD:
代码语言:javascript复制cicsadd -c td -r REGION_NAME TCCZ ProgName="DFHMIRS" Timeout=5 TWASize=32767
cicsadd -c td -r REGION_NAME INQY ProgName="GCCBINQY" Timeout=5 TWASize=32767
cicsadd -c td -r REGION_NAME TCCA ProgName="GCCBMMN" Timeout=5 TWASize=32767 TWASize 大小不能忽略。
配置 PD:
代码语言:javascript复制cicsadd -c pd -r REGION_NAME GCCBMMN PathName="GCCBMMN" RSLKey=public
cicsadd -c pd -r REGION_NAME GCCBINQY PathName="GCCBINQY" RSLKey=public
cicsadd -c pd -r REGION_NAME GCCBCOP PathName="GCCBCOP" RSLKey=public 添加PD 查看和删除PD方法类似。
配置 XAD
代码语言:javascript复制cicsadd -c xad -r REGION_NAME cicsdb2 SwitchLoadFile="/usr/lpp/cics/bin/db21pc" XAOpen="DBNAME,USER_ID,PASSWORD"
其中 REGION_NAME、DBNAME、USER_ID 和 PASSWORD 需相应地替换为您环境中的信息。
配置 CTG:
要配置 ctg.ini 文件,请在 /opt/IBM/cicstg/bin/ctg.ini
文件中添加以下行:
SECTION SERVER = REGION_name
UPPERCASESECURITY=N
PROTOCOL=TCPIP
NETNAME=IP_address
PORT=port_number
CONNECTTIMEOUT=0
TCPKEEPALIVE=N
ENDSECTION
- 其中 REGION_name、IP_address 和 port_number 需相应地替换为您环境中的信息。
- 使用 root 用户帐户完成以下步骤以重新启动 CTG:
- 运行 cicscli -s 命令以启动 CTG。
- 可选: 要验证是否已成功启动 CTG,请运行 cicscli -l 命令。
停启CICS
代码语言:javascript复制cicscp -v stop region REGION_name
cicscp -v start region REGION_name StartType=cold
——– IPC支持 EXTSHM=ON
DB2NOEXITLIST=ON
Db2中出现的超时产生core : Transaction ‘CPMI’, Abend ‘A147’, at ‘???’. 以及对于一些莫名产生core信息只能看到数据库断开信息如:
代码语言:javascript复制 IOT/Abort trap in pthread_kill at 0xd0540a14
0xd0540a14 (pthread_kill 0xb4) 80410014 lwz r2,0x14(r1)
pthread_kill(??, ??) at 0xd0540a14
_p_raise(??) at 0xd053fe64
raise.raise(??) at 0xd0120c20
SupOS_CicsCOREDump() at 0xdc9eedb4
SupOS_TurnSignalToException(??, ??, ??) at 0xdc9ed5dc
sqleUCdisconnect(??) at 0xd86743b0
sqleUCtermAllCtx(??, ??) at 0xd8673ef0
sqleterm(char,sqlca*)(??, ??) at 0xd8cec01c
sqle_ctx_exit_function()() at 0xd88f1e7c
sqle_myexitlist_function()() at 0xd88f1cf0
sqleExitApplicationEnvironment(unsigned int)(??) at 0xd88f12d0
sqloipdc.sqlo_execute_list@AF34_4(??) at 0xd8804858
sqlo_execute_list() at 0xd88047ac
exit(??) at 0xd017cf70
bde_thread_TaskExit(??) at 0xdc323b18
bde_Exit(??) at 0xdc333dc4
SupOS_Exit(??) at 0xdc9ed494
....
可以尝试添加环境变量 DB2NOEXITLIST=ON 有两种方法可以达到这个目的: 1. Set the environment variable DB2NOEXITLIST=ON for the DB2 client environment on the system with the TXSeries region. a) db2set DB2NOEXITLIST=ON b) db2 terminate c) re-start CICS region 2. Set DB2NOEXITLIST=ON in the region's environment and re-start the region. Refer to DB2 manual for more information on the DB2NOEXITLIST environment variable. 设置成yes似乎也可以,未验证... Set the environment variable DB2NOEXITLIST=yes in DB2 client env. 1.Set db2set DB2NOEXITLIST=yes. 2.Terminate DB2 and restart the region. Set DB2NOEXITLIST=yes in region's environment
一些错误分析: LINK和START调用的主要返回值解释如下: 1、LINK错误码分析 INVREQ(请求非法) 交易状态不对(有无SYNCONRETURN混用) TRANSID全空 LENGERR DATALENGTH选项为负值 DATALENGTH选项比LENGTH选项长 NOTAUTH 权限问题 使用了SYSID选项,但是RSLCheck没有设置为NONE PGMIDERR PD不存在 PD被disabled. ROLLEDBACK 被LINK的程序无法执行syncpoint SYSIDERR CD不存在或错误 对方域不存在或已经宕机 网络不通 在本地TD:timeout时,远端交易还在队列 通信错误码:15a00002/15a00102 TERMERR 会话失败,TRANSID不存在 在本地TD:timeout时,远端交易还在运行。通信错误码:15a00007/a0000100 RD:MaxTClassLim引起的Reject。通信错误码:15a00007/84b6031 2、START错误码分析 INVREQ(请求非法) Hours超范围 Minutes超范围 Seconds超范围 指定REQID但是该TSQ已经存在(在Pool不足时可能出现) IOERR SFS满 ISCINVREQ ISC失败 LENGERR 使用LENGTH(0). NOTAUTH 权限不足 使用了SYSID选项,但是RSLCheck没有设置为NONE SYSIDERR CD不存在或错误 对方域不存在或已经宕机 网络不通 通信错误码:15a00002/15a00102 TERMIDERR TERMID选项非法 TRANSIDERR TRANSID选项非法
代码语言:javascript复制 when ('NORMAL') return ('0');
when ('ERROR') return ('1');
when ('RDATT') return ('2');
when ('WRBRK') return ('3');
when ('EOF') return ('4');
when ('EODS') return ('5');
when ('EOC') return ('6');
when ('INBFMH') return ('7');
when ('ENDINPT') return ('8');
when ('NONVAL') return ('9');
when ('NOSTART') return ('10');
when ('TERMIDERR') return ('11');
when ('DSIDERR') return ('12');
when ('FILENOTFOUND') return ('12');
when ('NOTFND') return ('13');
when ('DUPREC') return ('14');
when ('DUPKEY') return ('15');
when ('INVREQ') return ('16');
when ('IOERR') return ('17');
when ('NOSPACE') return ('18');
when ('NOTOPEN') return ('19');
when ('ENDFILE') return ('20');
when ('ILLOGIC') return ('21');
when ('LENGERR') return ('22');
when ('QZERO') return ('23');
when ('SIGNAL') return ('24');
when ('QBUSY') return ('25');
when ('ITEMERR') return ('26');
when ('PGMIDERR') return ('27');
when ('TRANSIDERR') return ('28');
when ('ENDDATA') return ('29');
when ('INVTSREQ') return ('30');
when ('EXPIRED') return ('31');
when ('RETPAGE') return ('32');
when ('RTEFAIL') return ('33');
when ('RTESOME') return ('34');
when ('TSIOERR') return ('35');
when ('MAPFAIL') return ('36');
when ('INVERRTERM') return ('37');
when ('INVMPSZ') return ('38');
when ('IGREQID') return ('39');
when ('OVERFLOW') return ('40');
when ('INVLDC') return ('41');
when ('NOSTG') return ('42');
when ('JIDERR') return ('43');
when ('QIDERR') return ('44');
when ('NOJBUFSP') return ('45');
when ('DSSTAT') return ('46');
when ('SELNERR') return ('47');
when ('FUNCERR') return ('48');
when ('UNEXPIN') return ('49');
when ('NOPASSBKRD') return ('50');
when ('NOPASSBKWR') return ('51');
when ('SYSIDERR') return ('53');
when ('ISCINVREQ') return ('54');
when ('ENQBUSY') return ('55');
when ('ENVDEFERR') return ('56');
when ('IGREQCD') return ('57');
when ('SESSIONERR') return ('58');
when ('SYSBUSY') return ('59');
when ('SESSBUSY') return ('60');
when ('NOTALLOC') return ('61');
when ('CBIDERR') return ('62');
when ('INVEXITREQ') return ('63');
when ('INVPARTNSET') return ('64');
when ('INVPARTN') return ('65');
when ('PARTNFAIL') return ('66');
when ('USERIDERR') return ('69');
when ('NOTAUTH') return ('70');
when ('VOLIDERR') return ('71');
when ('SUPPRESSED') return ('72');
when ('WRONGSTAT') return ('73');
when ('NAMEERROR') return ('74');
when ('CCERROR') return ('76');
when ('NOSPOOL') return ('80');
when ('TERMERR') return ('81');
when ('ROLLEDBACK') return ('82');
when ('END') return ('83');
when ('DISABLED') return ('84');
when ('ALLOCERR') return ('85');
when ('STRELERR') return ('86');
when ('OPENERR') return ('87');
when ('SPOLBUSY') return ('88');
when ('SPOLERR') return ('89');
when ('NODEIDERR') return ('90');
when ('TASKIDERR') return ('91');
when ('CONTAINERERR') return ('110');
when ('TOKENERR') return ('112');
when ('CHANNELERR') return ('122');
when ('CCSIDERR') return ('123');