IBM Support

Prerequisite Steps Before Upgrading Version 4.0.5 DB2 CP4D Database for OpenPages, to another version

Fix Readme


Abstract

The Cloud Pak 4 Data (CP4D) 4.0.5 Db2 database image used by OpenPages is missing a library file that prevents subsequent operations from succeeding. These steps must be run before the upgrade from 4.0.5 to any other CP4D version. Attempting an upgrade without going through these prerequisite steps causes failure of the upgrade. Once failed, a restore from backup to a point previous to the upgrade attempt will most likely be necessary as the errors can be difficult and time-consuming to remediate after the upgrade.

Content

Prerequisite steps to perform before an upgrade from 4.0.5 DB2 CP4D database for OpenPages, to any other version:
1.  The libmklidax.so library file is missing on the 4.0.5 DB2 CP4D image.  Obtain the library file from IBM DB2 support, or from a 4.0.8 DB2 CP4D image.  The path to the file is:
/mnt/blumeta0/home/db2inst1/sqllib/lib64/libmklidax.so
The path listed is the path to where the library file needs to be in 4.0.5, and where the library file is in a 4.0.8 image ( if you choose to copy the file from that image).
To verify, run the list dynamic dependencies command on the db2dbroutext file:
ldd sqllib/bin/routine/db2dbroutext
If the library is missing or not in the correct path, the output includes:
libmklidax.so => not found
If the library is present and in the correct path, the output includes:
libmklidax.so => /mnt/blumeta0/home/db2inst1/sqllib/lib64/libmklidax.so (0x00007f50309e7000)
2. Rebind system objects
a. Verify that the problem exists by running the following SQL.
db2 "select DYNAMICRULES from syscat.packages where pkgname = 'SQLABP03'"

DYNAMICRULES
------------
B
If the result is an "R", then these steps can be skipped.  If the result is a "B", then continue on with the rest of the steps.
b. Stop all services that attach to the database, such as but not limited to the application servers, Cognos, and the search servers.
c. Disconnect all other sessions to the database.
db2 force applications all
d. Verify that all applications are disconnected.  
db2 list applications

(LOCAL entries that look similar to OPENPAGE db2bp 42 *LOCAL.db2ext.220603151058 are ok)
e. Run the bind for the DB2 system objects.
(replace DBNAME with the database name, db2instanceowner with the name of the db2 instance owner, and yourpassword with the correct password)

db2 terminate
cd /home/db2instanceowner/sqllib/bnd/
db2 CONNECT TO DBNAME user db2instanceowner using yourpassword
db2 BIND @db2ubind.lst BLOCKING ALL GRANT PUBLIC SQLERROR CONTINUE
db2 BIND @db2cli.lst BLOCKING ALL GRANT PUBLIC ACTION ADD
db2 bind db2schema.bnd blocking all grant public sqlerror continue
db2 terminate
 Sample output:
(warnings are expected, such as: Binding was ended with "0" errors and "13" warnings.  Errors are not ok):

$ db2 BIND @db2ubind.lst BLOCKING ALL GRANT PUBLIC SQLERROR CONTINUE

LINE    MESSAGES FOR db2ubind.lst
------  --------------------------------------------------------------------
        SQL0061W  The binder is in progress.

LINE    MESSAGES FOR db2clpnc.bnd
------  --------------------------------------------------------------------
        SQL0595W  Isolation level "NC" has been escalated to "UR".
                  SQLSTATE=01526

LINE    MESSAGES FOR db2arxnc.bnd
------  --------------------------------------------------------------------
        SQL0595W  Isolation level "NC" has been escalated to "UR".
                  SQLSTATE=01526

LINE    MESSAGES FOR db2_adminotm.bnd
------  --------------------------------------------------------------------
  242   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  456   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  483   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  562   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  632   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  658   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  674   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  744   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
  828   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
 1199   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532
 1298   SQL0204N  "SYSTOOLS.ADMIN_MOVE_TABLE" is an undefined name.
                  SQLSTATE=01532

LINE    MESSAGES FOR db2ubind.lst
------  --------------------------------------------------------------------
        SQL0091N  Binding was ended with "0" errors and "13"
                  warnings.


$ db2 BIND @db2cli.lst BLOCKING ALL GRANT PUBLIC ACTION ADD

LINE    MESSAGES FOR db2cli.lst
------  --------------------------------------------------------------------
        SQL0061W  The binder is in progress.
        SQL0091N  Binding was ended with "0" errors and "0" warnings.

$ db2 bind db2schema.bnd blocking all grant public sqlerror continue

LINE    MESSAGES FOR db2schema.bnd
------  --------------------------------------------------------------------
        SQL0061W  The binder is in progress.
        SQL0091N  Binding was ended with "0" errors and "0" warnings.
f. Verify that the permissions are changed: (DYNAMICRULES is "R" instead of "B" now)
db2 "select DYNAMICRULES from syscat.packages where pkgname = 'SQLABP03'"

DYNAMICRULES
------------
R
g. Make sure the instance owner and PUBLIC have "EXECUTE" permissions on SQLC2P31:
db2 "SELECT authid, authidtype, privilege, objectname, objecttype FROM SYSIBMADM.PRIVILEGES WHERE objecttype = 'DB2 PACKAGE' and objectname = 'SQLC2P31'" | sed -e 's/----\+/----/g' | column -t
<snip>
DB2EXT    U           EXECUTE    SQLC2P31    DB2         PACKAGE
PUBLIC    G           EXECUTE    SQLC2P31    DB2         PACKAGE
 
h.  Revalidate all database objects:
db2 "call admin_revalidate_db_objects(null,null,null)"

  Return Status = 0
i.  Verify that there are 0 invalid objects left:
db2 -x "select count(*) from sysibm.sysinvalidobjects"

0
If there are invalid objects, rerun the revalidate data objects step.
j. Proceed with the upgrade.

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSE3K1","label":"IBM OpenPages for IBM Cloud Pak for Data"},"ARM Category":[{"code":"a8m3p000000LQxMAAW","label":"Upgrade"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.2.0;8.3.0"}]

Document Information

Modified date:
27 June 2022

UID

ibm16598843