Env:
DB2 V9.1 on AIX 5,
Datastage V8 on Windows 2003
Problem:
昨天在跑 datastage job 的时候, abort 掉一个
查了下 log, 发现是
APT_CombinedOperatorController,0: Fatal Error: Fatal: [IBM][CLI Driver] SQL1224N The database manager is not able to accept new requests, has terminated all requests in progress, or has terminated your particular request due to an error or a force interrupt. SQLSTATE=55032
DSTAGE-DB2CLI-0005`:`Unable to connect to DB2 server 'FRS1H10'
随即去看 db2diag.log
发现了一段错误代码
2010-01-05-09.31.14.721838-300 I40340406C669 LEVEL: Severe (OS)
PID : 548900 TID : 1 PROC : osh
INSTANCE: db2inst1 NODE : 000
EDUID : 1
FUNCTION: DB2 UDB, SQO Memory Management, sqlocshr, probe:180
MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
CALLED : OS, -, shmat
OSERR : EMFILE (24) "Too many open files"
DATA #1 : Memory set handle, PD_TYPE_OSS_MEM_SET_HDL, 28 bytes
0x2FF1B4A8 : FFFF FFFF FFFF FFFF 2020 2020 2020 2020 ........
0x2FF1B4B8 : 0000 0000 0010 0036 0004 0000 .......6....
Solution:
建立一个 TCP/IP loopback, 即, 把DB在本地重新catalog一次
Cause:
AIX上:
对于64位进程,同一进程可连接最多268435456个共享内存段;
对于32位进程,同一进程可连接最多11个共享内存段,除非使用扩展的shmat;
即对于32位应用,如果没有使用 extshm,因为最大的连接数量只有11个
因为这个job中有较多的 partition, 所以产生的连接就大于11, 就报了上面的错误.
catalog 以后, 就使用了TCP/IP来做通信, 就消除了连接数的限制
--转自