我正在尝试使用DB2数据库设置docker镜像。 安装完成没有任何问题,但是当我尝试重新启动数据库时出现以下错误:
SQL1084C无法分配共享内存段。 SQLSTATE = 57019
我将Dockerfile基于这个: https://github.com/jeffbonhag/db2-docker 他声明应该通过添加命令来解决同样的问题
sysctl kernel.shmmax=18446744073692774399
允许内核分配更多内存,但错误仍然存在。
docker守护程序本身在Ubuntu 14.04中运行,它在MacOSX上的Parallels内运行。
编辑:经过一些搜索后,我发现这与以下命令有关:
UPDATE DB CFG FOR S0MXAT01 USING locklist 100000;
答案 0 :(得分:1)
您正在过度分配数据库内存堆,即docker无法满足内存要求。看看following link to the manuals。这将为您提供数据库内存中的内容细分:
$string = str_replace("\r\n[li]", "[li]", $string);
$string = str_replace("[/li]\r\n", "[/li]", $string);
你可以摆弄(减少)任何这些堆,直到码头工人满意为止。
答案 1 :(得分:0)
如果其他人遇到这种情况 - 如果您正在滚动自己的容器并将内存设置为自动,它可能会尝试将主机上的所有内存分配给 Db2,从而导致此错误。有时,最初的开始效果还不错,但在接下来的数周或数月内,您会遇到奇怪的崩溃。
“官方”db2 容器(开发者社区版本一)处理这个问题。如果您正在构建自己的容器,则可能需要根据容器的大小将 DATABASE_MEMORY 和/或 INSTANCE_MEMORY 设置为合理的限制,并在容器中重新启动 Db2。这可以在您的入口点脚本中完成。