最近遇到一个问题,远程连接db2数据库,shell程序同时访问db2数据库的同一个表,但是返回的值是
DB21017E The Command Line Processor encountered a system error with the
front-end process output queue. Reason code = -2029060029.
系统报这个错。经过查资料得知,这是一个系统问题,系统进程超出的限制
Reason code = -2029060029.
SQLO_QUE_EXCEED = maximum system queue limit exceeded.
建议修改内核参数 msgmni 为一个合适的值
建议先修改为 16384 再进行测试
管理员登陆,编辑数据库端和shell程序端的参数
vi /etc/sysctl.conf
加入 kernel.msgmni = 16384
保存
执行 sysctl -p 使之生效
OK 以上配置完成后,错误解决了!
------------------------------------------------------------------------------------
下面介绍一下配置信息
在安装 DB2® 数据库系统之前,应更新 Linux® 内核参数。当运行 DB2 数据库系统时,Linux 上特殊内核参数的缺省值可能不能满足要求。
必须具有 root 用户权限才能修改内核参数。
要在 Red Hat 和 SUSE Linux 上更新内核参数:
3. # ipcs -l
4.
5. ------ Shared Memory Limits --------
6. max number of segments = 4096 // SHMMNI
7. max seg size (kbytes) = 32768 // SHMMAX
8. max total shared memory (kbytes) = 8388608 // SHMALL
9. min seg size (bytes) = 1
10.
11. ------ Semaphore Limits --------
12. max number of arrays = 1024 // SEMMNI
13. max semaphores per array = 250 // SEMMSL
14. max semaphores system wide = 256000 // SEMMNS
15. max ops per semop call = 32 // SEMOPM
16. semaphore max value = 32767
17.
18. ------ Messages: Limits --------
19. max queues system wide = 1024 // MSGMNI
20. max size of message (bytes) = 65536 // MSGMAX
default max size of queue (bytes) = 65536 // MSGMNB
22.kernel.sem=250 256000 32 1024
23.#示例:用于 64 位系统的 shmmax
24.kernel.shmmax=1073741824
25.#示例:用于 16GB 内存的 90% 的 shmall
26.kernel.shmall=3774873
27.kernel.msgmax=65535
kernel.msgmnb=65535
sysctl -p