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 |
|