Solaris10中执行db2命令报错DB21018E的一个解决办法

使用db2命令连接数据库时报错如下

DB21018E  A system error occurred. The command line processor could not  continue processing.

查看日志/db2dir/db2diag.log,详细错误如下

2024-02-29-01.38.11.023038+480 E410318151A480       LEVEL: Severe (OS)
PID     : 1697                 TID : 1              PROC : db2
INSTANCE: db2u             NODE : 000
HOSTNAME: M10-4-9-146
EDUID   : 1
FUNCTION: DB2 UDB, oper system services, sqloForkDaemon, probe:20
MESSAGE : ZRC=0x870F00F2=-2029059854=SQLO_NORES
          "no resources to create process or thread"
CALLED  : OS, -, msgget
OSERR   : ENOSPC (28) "no space left on device"

db2命令调用msgget函数时报错no space left on device,用这个错误信息为线索找到一个帖子
PeopleSoft: Fixing “msgget: No space left on device” Error on Solaris 10

根据该帖子的描述msgget的错误含义如下

 A message queue identifier is to be created but the system-imposed limit on the maximum number of allowed message queue  identifiers system wide would be exceeded. 
 See NOTES.
 NOTES 
 The system-imposed limit on  the  number  of  message  queue identifiers  is  maintained on a per-project basis using the project.max-msg-ids resource control

要创建一个消息队列标识符,但超过了系统对全系统允许的消息队列标识符最大数量的限制。
在 Solaris 10 之前,可以配置 /etc/system System V IPC 的 msgsys:msginfo_msgmni 来控制可创建消息队列的最大数量。Solaris 10 之前系统的默认值为 50。

在 Solaris 10 中,资源控制 project.max-msg-ids 取代了旧的 /etc/system 可调整项sginfo_msgmni,默认值提高到 128。

解决步骤如下

1.查看当前用户消息队列最大值

% id -p
uid=101(db2u) gid=1(other) projid=3(default)
% prctl -n project.max-msg-ids -i project 3
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
project.max-msg-ids
        privileged        128       -   deny                                 -
        system          16.8M     max   deny   

2.修改最大值为512

% su - root
password:
# prctl -n project.max-msg-ids -r -v 512 -i project 3
# prctl -n project.max-msg-ids -i project 3
project: 3: default
NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT
project.max-msg-ids
        privileged        512       -   deny                                 -
        system          16.8M     max   deny                                 -

3.永久生效,写入配置文件

# projadd -p 100 -c "db2 IPC Tuning" -K "project.max-msg-ids=(priv,512,deny)" db2appipc
# usermod -K project=db2appipc db2u
UX: usermod: db2u is currently logged in, some changes may not take effect until next login.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值