DB2 - Problem description
| Problem IC99935 | Status: Closed | 
| DB2IUPGRADE FAILURE WHEN DB2NODES.CFG CONTAINS VIRTUAL IP ADDRESSES | |
| product: | |
| DB2 FOR LUW / DB2FORLUW / A50 - DB2 | |
| Problem description: | |
| Background of the problem ; 
- db2ckupgrade API does sqlestar() and then sqleatin() , 
sqleatin() fails  if virtual host names are used  AND sqleatin() 
is called after sqlestar()  from the same ckupgrade app. 
The actual problem is in oss code sqloGetDftNodeNum() that 
compares a tcpip resolved host name to db2nodes.cfg node lines 
which is not a good comparison if virtual hostnames are used. It 
will fail to understand these 2 hosts are actually same hosts. 
There is a ssh/rsh solution executing this at remote node when 
db2rstar  is used to do ssh/rsh  in this host and figure out 
what it resolves and save it to a file. Then compare these 
values to match the host later instead of trying to do strcmp in 
db2nodes.cfg with tcpip resolve names. 
 
 
API -> blah() -->  sqlestar() -> sqleatin() -> blah... 
 
Closer look : 
                          sqlestar() - > INITAPPENV- > CACHE 
NODE UNKNOWN -> (noDEfaultNodeKnown - IT IS NORMAL - db2start is 
not DONE yet)  [ see detail#2 ] -> sqleatin() -> VOID 
(INITAPPENV : it is already done DOES NOT DO refersh node info) 
-> getDefaultnodeToAttachDBMS ->  CACHED NODE IS STILL UNKNOWN - 
SQLEATIN -> FAILS on attaching DBMS. 
 
 
[detail #2] db2start creates a .dft file that has indeed default 
node number created in .dft file from port 0 detection. Now if 
you call another api indeed it would know the only reason above 
failure in sqleatin()  never do multiple INITAPPENV from same 
app that might be calling 2 different db2 API in the same exe. 
and the point we bail out second time INITAPPENV we WONT refresh 
the nodes info from .dft file. If we were calling now  a second 
time another API that has sqleatin() it would SUCCEED. 
 
 
SUCCESS CASE 
exe1 - sqlestar  OR outright db2start 
exe2 - sqleatin 
 
exe1 + exe2 would work  (sqleatin would refresh in initAPPENV) 
 
 
FAIL CASE 
exe3 - sqlestar + sqleatin  (sqleatin  would NOT refresh in 
initAPPENV ) if it were virtual ip it would fail... 
exe3 would fail 
 
 
The fix : 
inside sqlestart() after startup completes ok , but if node is 
still unknown in the cache of INITAPPENV then refresh this cache 
again. Limited and ugly workaround. | |
| Problem Summary: | |
| **************************************************************** * USERS AFFECTED: * * DPF instance * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to version 10.5 fixpack 3. * **************************************************************** | |
| Local Fix: | |
| change the entries in db2nodes.cfg from virtual ip to hostname | |
| available fix packs: | |
| DB2 Cancun Release 10.5.0.4 (also known as Fix Pack 4) for Linux, UNIX, and Windows | |
| Solution | |
| Fixed in version 10.5 fixpack 3. db2iupgrade succeeds with upgrading from v10.1 to v10.5 | |
| Workaround | |
| not known / see Local fix | |
| Timestamps | |
| Date - problem reported : Date - problem closed : Date - last modified : | 07.03.2014 08.09.2014 08.09.2014 | 
| Problem solved at the following versions (IBM BugInfos) | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 10.5.0.4 |  | 







 
