CA APM tess-db-cfg.xml file does not get updated with correct Oracle parameters for the APM database after a new APM EM install

Document ID : KB000019834
Last Modified Date : 12/07/2018
Show Technical Document Details
Issue:

After installing CA APM EM and choosing Oracle for the APM database the tess-db-cfg.xml file in the config directory still has the default PostgreSQL database connection data instead of the Oracle data entered at the UI.

The main install log Introscope_x.x.x.x_InstallLog.log contains this Non Fatal Error:

Custom Action:

com.wily.introscope.installer.DatabaseConfigFileModifier                    

                         Status: ERROR                                     

                         Additional Notes: ERROR -     class               

com.wily.introscope.installer.DatabaseConfigFileModifier.install() runtime exception: 

Environment:
APM 9.x, 10.x
Cause:

The root cause of the exception and subsequent failure to update the tess-db-cfg.xml file was found to be a "$" character in the database password.
"$" is a special character used by the InstallAnywhere software to refer to variables.
A single quote character "'" is also known to be another special character for InstallAnywhere that can cause a similar error.

Resolution:

There are 2 options:

1. Uninstall the EM and reinstall it after changing the Oracle password so that it does not contain either of the above special characters. If required the password can always be changed back after the install and the tess-db-cfg.xml file updated accordingly.

2. Stop the EM.
Backup the tess-db-cfg.xml file and change it to replace Postgres parameters with required Oracle parameters as follows (bold strings need to be changed accordingly):
      <property name="em.dbtype">Oracle</property>
      <property name="hibernate.connection.username">apmdb</property>
      <property name="hibernate.connection.password">PLAIN_TEXT_PASSWORD</property>
      <property name="plainTextPasswords">true</property>
      <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
      <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
      <property name="hibernate.connection.url">jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DATABASE_HOSTNAME)(PORT=DATABASE_LISTENER_PORT))(CONNECT_DATA=(SERVICE_NAME=ORACLE_SERVICE_NAME)))</property>
      <property name="hibernate.connection.tcpKeepAlive">true</property>