Al intentar montar varias instancias de DB2 en una máquina Windows, obtenía un error cuando intentaba conectarme desde otra máquina:
[IBM][CLI Driver] SQL30081N Se ha detectado un error de comunicaciones. Protocolo de comunicaciones utilizado: “TCP/IP”. API de comunicaciones utilizada: “SOCKETS”.
Ubicación donde se ha encontrado el error: “direccion_ip”. Función de comunicaciones que ha detectado el error: “connect”. Código(s) de error específico(s) del Protocolo: “10061″, “*”, “*” . SQLSTATE=08001
Costó encontrar el problema, pero al final se consiguió.
Haciendo una instalación normal:
Creamos un usuario “instbd2” en la sistema operativo para ser el administrador de la instancia.
Entramos en la máquina con ese usuario.
Se crea la instancia con:
db2icrt instbd2 -s ese -u instbd2,contraseña
Esto hace que se añadan unas lineas al fichero “etc/services”:
DB2_instbd2 60004/tcp
DB2_instbd2_1 60005/tcp
DB2_instbd2_2 60006/tcp
DB2_instbd2_END 60007/tcp
Se crea la base de datos con:
db2 create db bd2 using codeset UTF-8 territory ES
Se hace un db2start para arrancar la base de datos.
Al intentar conectar desde otra máquina aparece el error anterior y la solución pasa por:
Hay que añadir la variable “DB2COMM=tcpip” a la configuración de la base de datos ejecutando
db2set db2comm=tcpip
Si no se añade este parámetro, la base de datos arranca dando el mensaje:
01/01/2001 01:01:01 0 0 SQL5043N Support for one or more communications protocols failed to start successfully. However, core database manager functionality started successfully.
SQL1063N DB2START processing was successful.
Y además hay que añadir una línea al fichero “etc/services” para indicar por que puerto se atienden las peticiones de conexión. Se añade la línea “db2c_instbd2 50004/tcp” al fichero y dejamos una línea en blanco al final.
Por último hay que modificar la configuración de la instancia para indicar que utilice ese servicio. Se puede ejecutar:
db2 update dbm cfg using SVCENAME db2c_instbd2
Para que todos los cambios surtan efecto hay que parar “db2stop” y arrancar la base de datos “db2start”.