Friday, February 7, 2014

Installing TNPM 1.3.2 with RHEL 5.9 Issues and Workarounds

Hi, I'm currently installing a fresh TNPM 1.3.2 platform and I believe some of the issues I found could be of interest. So, as I find them, I will list them here.


Oracle 32bit client MUST be installed on the 64bit server as well

Despite the documentation states the opposite ( see here ), it is mandatory to have the 32bit installed, otherwise, the topologyEditor and deployer won't be able to connect to the database. You MUST use the 32bit JDBC version when installing the topologyEditor and you MUST configure on the topologyEditor the ORACLE_HOME_ROOT property to point to your 64bit oracle install and ORACLE_HOME property to point to the 32bit client (and not the 64bit installed server) for you database host


Missing package for topologyEditor installation

If you try to install the topologyEditor and get this message:


"Graphical installers are not supported by the VM. The console mode will be used instead..."

It is because some 32bit library is missing. In my case, for RHEL 5.9 the missing 32bit libraries were libXres.i386 and libXtst.i386

Please notice that the same error doesn't occur for RHEL 5.5...


Missing packages for provisoinfo GUI on Datamart

If you see the following error message when opening the provisoinfod:

"java.lang.UnsatisfiedLinkError : awt (An exception was pending after running JNI_OnLoad)"

Please make sure all libX... packages have the 64bit and 32bit installed

# yum list installed | grep libX
libX11.i386                                1.0.3-11.el5_7.1            installed
libX11.x86_64                              1.0.3-11.el5_7.1            installed
libXTrap.i386                              1.0.0-3.1                   installed
libXTrap.x86_64                            1.0.0-3.1                   installed
libXau.i386                                1.0.1-3.1                   installed
libXau.x86_64                              1.0.1-3.1                   installed
libXaw.i386                                1.0.2-8.1                   installed
libXaw.x86_64                              1.0.2-8.1                   installed
libXcursor.i386                            1.1.7-1.2                   installed
libXcursor.x86_64                          1.1.7-1.2                   installed
libXdmcp.i386                              1.0.1-2.1                   installed
libXdmcp.x86_64                            1.0.1-2.1                   installed
libXext.i386                               1.0.1-2.1                   installed
libXext.x86_64                             1.0.1-2.1                   installed
libXfixes.i386                             4.0.1-2.1                   installed
libXfixes.x86_64                           4.0.1-2.1                   installed
libXfont.i386                              1.2.2-1.0.4.el5_7           installed
libXfont.x86_64                            1.2.2-1.0.4.el5_7           installed
libXfontcache.i386                         1.0.2-3.1                   installed
libXfontcache.x86_64                       1.0.2-3.1                   installed
libXft.i386                                2.1.10-1.1                  installed
libXft.x86_64                              2.1.10-1.1                  installed
libXi.i386                                 1.0.1-4.el5_4               installed
libXi.x86_64                               1.0.1-4.el5_4               installed
libXinerama.i386                           1.0.1-2.1                   installed
libXinerama.x86_64                         1.0.1-2.1                   installed
libXmu.i386                                1.0.2-5                     installed
libXmu.x86_64                              1.0.2-5                     installed
libXp.i386                                 1.0.0-8.1.el5               installed
libXp.x86_64                               1.0.0-8.1.el5               installed
libXpm.i386                                3.5.5-3                     installed
libXpm.x86_64                              3.5.5-3                     installed
libXrandr.i386                             1.1.1-3.3                   installed
libXrandr.x86_64                           1.1.1-3.3                   installed
libXrender.i386                            0.9.1-3.1                   installed
libXrender.x86_64                          0.9.1-3.1                   installed
libXres.i386                               1.0.1-3.1                   installed
libXres.x86_64                             1.0.1-3.1                   installed
libXt.i386                                 1.0.2-3.2.el5               installed
libXt.x86_64                               1.0.2-3.2.el5               installed
libXtst.i386                               1.0.1-3.1                   installed
libXtst.x86_64                             1.0.1-3.1                   installed
libXv.i386                                 1.0.1-4.1                   installed
libXv.x86_64                               1.0.1-4.1                   installed
libXxf86dga.i386                           1.0.1-3.1                   installed
libXxf86dga.x86_64                         1.0.1-3.1                   installed
libXxf86misc.i386                          1.0.1-3.1                   installed
libXxf86misc.x86_64                        1.0.1-3.1                   installed
libXxf86vm.i386                            1.0.1-3.1                   installed
libXxf86vm.x86_64                          1.0.1-3.1                   installed

Using oracle instance name different than PV

If you need to use another instance name, please make sure that you are defining EXACTLY the same value everywhere, specially the correct letter case. This is case-sensitive for the database instance creation!!

CheckDB script fails mentioning the os version is not supported

As you can see in the image below, the RHEL 5 updates 1 to 10 are supported by TNPM 1.3.2, but the checkdb script expects version 5.5U (hardcoded on checkdb.ini). Change the value in the checkdb.ini file and it should work.




Manual copy and execution of install packages

When installing TNPM, the deployer assumes you will enter the password for the application user on all remote servers and the root user. This is used to copy and execute the install package remotely. Now, this works fine when you have those passwords, but, in a real company environment, it will be unlikely you will receive them.

It is common to be able to do a "sudo" to the required application user and to transfer files using ssh shared keys among the servers (so no password needed).

Unfortunately, the deployer is not capable of transferring files remotely using ssh shared keys (this was identified as an APAR on Nov 2011...)

So, the solution is to disable the "remote file transfer" and "remote command execution" and do the work manually. The only problem is that there is another bug related to the install package that should be copied over (APAR opened on Jan 2012...)

Below you can find the steps necessary to manually create and execute the packages.

On the deployer disable the "remote file transfer" and the "remote execution". After, execute the installation plan step by step. It will give you an error for each step related to remote hosts. Once you see the error, right-click on the step and check the command output. You will see something mentioning you have to copy over the files under /tmp/ProvisoConsumer/(...)/runtime directory. Follow the instructions below for each step.

Deployer step: OS check

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00001_CheckSys_OS_step_1_1 /runtime
  2. # mkdir package
  3. # cd package/
  4. # cp ../../bin/* .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00001_CheckSys_OS_step_1_1/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00001_CheckSys_OS_step_1_1
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00001_CheckSys_OS_step_1_1/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00001_CheckSys_OS_step_1_1/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.

Deployer step: Database check

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00002_CheckSys_DB_step_1_2/runtime
  2. # mkdir package
  3. # cd package/
  4. # cp ../../bin/* .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00002_CheckSys_DB_step_1_2/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00002_CheckSys_DB_step_1_2
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00002_CheckSys_DB_step_1_2/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00002_CheckSys_DB_step_1_2/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.

Deployer step: JRE check

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_JRE_step_2_1/runtime
  2. # mkdir package
  3. # cd package/
  4. # cp <tnpm_image>/v132/proviso/RHEL/jre/RHEL5/ibm\-java\-jre\-6.0\-8.1\-linux\-i386.tgz .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_JRE_step_2_1/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_JRE_step_2_1
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_JRE_step_2_1/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as application user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_JRE_step_2_1/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.

Deployer step: Remote DataChannel setup

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataChannel_step_8_1/runtime
  2. # mkdir package
  3. # cd package/
  4. # cp -R <tnpm_image>/v132/proviso/RHEL/DataChannel/* .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataChannel_step_8_1/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataChannel_step_8_1
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataChannel_step_8_1/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as application user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataChannel_step_8_1/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.

Deployer step: Remote Datamart setup

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataMart_step_7_1/runtime
  2. # mkdir package
  3. # cd package/
  4. # cp -R <tnpm_image>/v132/proviso/RHEL/DataMart/RHEL5/* .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataMart_step_7_1/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataMart_step_7_1
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataMart_step_7_1/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataMart_step_7_1/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.

Deployer step: Remote TIP (TCR) setup

Please install TCR manually using its own installer and using the application username. After installing, mark this step as successful.

DO NOT install TCR using the deployer, once it will install the portal as root and as if that was not unsafe enough for an application portal (usually a public portal), it will execute chmod -R 777 <tip_home> as the last step. (yes, you can yell now...) 

Deployer step: Remote Dataview setup

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataView_step_10_1/runtime
  2. # mkdir package
  3. # cd package/
  4. # cp -R <tnpm_image>/v132/proviso/RHEL/DataView/RHEL5/* .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataView_step_10_1/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataView_step_10_1
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataView_step_10_1/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as application user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00004_DataView_step_10_1/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.

Deployer step: Remote Dataload setup

On the deployer host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataLoad_step_9_1/runtime
  2. # mkdir package
  3. # cd package/
  4. # cp -R <tnpm_image>/v132/proviso/RHEL/DataLoad/* .
  5. # cd ../../
  6. # tar cvf runtime.tar runtime/
On the remote host as application user:

  1. # mkdir -p /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataLoad_step_9_1/runtime
  2. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataLoad_step_9_1
  3. # scp <deployer_host>:/tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataLoad_step_9_1/runtime.tar .
  4. # tar xvf runtime.tar
On the remote host as root user:

  1. # cd /tmp/ProvisoConsumer/Plan/MachinePlan_<remote_host>/00003_DataLoad_step_9_1/runtime
  2. # ksh run.sh
If successfully executed (return code(s) = 0), go back to the deployer and change the step status as success for the "preparation" step and the "execution" step.