Fixing IBM DB2 for non-ancient operating systems

You’ve tried installing IBM DB2 V8.1 on the current release of an RPM-based but commercially unsupported operating system. Also, maybe you’ve installed DB2 before on older machines and have a nice response file set up with sane default values.

Something has died during the install, but you can’t tell whether it’s causing the following error:

$ db2cc 
Exception in thread "main" java.lang.UnsatisfiedLinkError: initIDs
        at java.awt.Component.<clinit>(
        at CC.<init>(Unknown Source)
        at CC.main(Unknown Source)

What do you do?

Make sure that libXp is installed.

<= RHEL 4 & older versions of Fedora Core (at least on Core 3) bundle libXp in xorg-libs, however this package has disappeared in newer versions of Fedora. Fortunately, a yum provides reveals that it now has its own package, so a yum install libXp will fix your problems.

Now db2cc and the other various DB2 admin-y bits should work, but what about the other bits that broke?

You’ll need to fix up some syntactical bits in /opt/IBM/db2/V8.1/instance/db2iutil - specifically, the syntax of tail has changed.

Open up db2iutil in an editor and type:

%s/tail +2/tail -n +2/g

This will replace all cases of tail +2, with tail -n +2. Supposedly just +2 is no longer valid syntax. (Bizarro! Is this some sort of odd regression?)

Now, for the cleanup bits. :-)

It’s worth dropping the DB2 instance just in case things have broke in mystical ways known only to IBM.

If the instance has already been created, drop it by running:

/opt/IBM/db2/V8.1/instance/db2idrop db2inst

And now recreate the DB2 instance:

/opt/IBM/db2/V8.1/instance/db2icrt -a SERVER -d -s wse -u db2fenc -p db2c_db2inst db2inst

The DB2 admin user probably needs a re-jigging too.

Delete the temporary directory created during the installation:

# rmdir /home/db2das/das

Recreate the DB2 administration user in DB2:

/opt/IBM/db2/V8.1/instance/dascrt -u dasusr -d

Of course, modify the paths as needed. Your Unix + DB2 usernames and DB2 instance names are probably different, so in my examples:

  • DB2 admin user = dasusr
  • DB2 instance user = db2inst
  • DB2 instance name = db2inst
  • Name of server = SERVER