En Docker, al usar DB2 y conectarse a testdb (que es un catálogo en un nodo), se produce un error de falta de memoria.
He estado utilizando la imagen de db2 de https://hub.docker.com/r/ibmcom/db2
y después de configurar el contenedor que se ejecuta en Docker.
Luego aumento la memoria de INSTANCE y la memoria del miembro mediante:
db2 update dbm cfg using INSTANCE_MEMORY 508241 immediate
db2 update dbm cfg member 0 using instance_memory 508241 immediate
La razón por la que establezco 508241 es que si configuro 508241, db2start lanzará un error:
12/22/2021 13:22:38 0 0 SQL1220N El administrador de la base de datos no pudo asignar memoria compartida.
SQL1032N No se emitió ningún comando de inicio del administrador de la base de datos. SQLSTATE=57019
Así que tuve que usar el número 508241 para INSTANCE_MEMORY y la memoria del miembro.
Después de que db2start se ejecute correctamente, db2 se conecta a testdb como usuario db2inst1 con la contraseña somepassword, se mostrará un error:
SQL1224N El administrador de la base de datos no puede aceptar nuevas solicitudes, ha terminado todas las solicitudes en curso o ha terminado la solicitud especificada debido a un error o una interrupción forzada. SQLSTATE=55032
Preguntas:
1. ¿Qué debo hacer a continuación para que la conexión a testdb funcione correctamente?
2. ¿Cómo puedo configurar más de 508241 para INSTANCE_MEMORY y que funcione correctamente al ejecutar db2start?
Por cierto, testdb se creó utilizando:
catalog tcpip node somenode remote somehost server 50000
catalog databse testdb as testdb at node somenode
davy.ai
Respuestas:
Verifica el estado actual del gestor de base de datos usando el comando: db2pd -d -hadr
Reinicia el gestor de base de datos usando el comando: db2 force applications all; db2stop force; db2start
Aumenta el número de conexiones permitidas al gestor de base de datos modificando el parámetro dbm cfg usando el comando: db2 update dbm cfg using MAX_COORDAGENT