SQL1229N in DPF environment
YogeshGawali 060001M1GN Visits (7702)
I am sharing one experience where my client moved DPF environment from 2 physical servers - 16 logical nodes to 1 physical server - 16 logical nodes . They had taken an offline backup of their database before this migration. They managed to restore the backup from old setup to new setup. However any command against this restored database in new setup were failing with SQL1229N error - The current transaction has been rolled back because of a system error.
The db2diag.log shows entries as follows:
The current server hosting 16 logical nodes were part of original DPF setup consisting of 2 servers with 8 logical nodes each.
So the error SQL1229N is due to the fact that the FCM communication was broken between new logical nodes. With DPF, the logical nodes communicate via FCM. And for this inter-node communication, FCM ports are reserved in /etc/services file. When customer moved DPF from two physical servers to single physical server, they allocated new 8 FCM ports for newly added 8 logical nodes. They kept original 8 ports as it is in /etc/services. These existing entries were cached in system memory and were still linked to original services running on system. In other words, the ports linked to old instance on current server were never released. Hence it can not be used for newly created instance.
In order to resolve this problem, we have two possible solutions:
1. Reboot the server so that cached FCM ports are released correctly.
2. Allocate new FCM ports for newly created DPF instance. This solution does not require system reboot.
For solution #2 :
a. Stop db2 instance completely.
b. edit /etc/services so as to remove existing FCM ports and keep new port entries in it.
c. Start db2 instance, activate the database and start executing any command. The command should run fine now.
*Please make a copy of original /etc/services file before doing any changes. It may be useful to revert the changes if something is failing after doing the changes suggested below.
Original FCM Ports:
DB2_db2inst1 60000/tcp # First FCM port for db2inst1
New FCM Ports:
DB2_db2inst1 60100/tcp # First FCM port for db2inst1
Hope this helps you!