BSM 9.26 Upgrade to APM 9.30 issue

Hello,

I am doing the upgrade from BSM 9.26 to APM 9.30. I had a 2-server architecture (GW and DPS) running on linux using an Oracle RAC database.

I uninstalled BSM 9.26 from both servers and installed APM 9.30 on both servers. Now when i run the BSM Upgrade Wizard on the DPS server i get the following error when connecting to RTSM schema:

2016-08-10 10:14:56,163 [pool-1-thread-1] (Step.java:82) ERROR - Task execution failed
com.mercury.infra.flowmngr.exceptions.JavaTaskInstantiationException: Failed to instantiate java task com.mercury.topaz.upgrade.tasks.ConnectCmdbDbTask
at com.mercury.infra.flowmngr.model.JavaTask.execute(JavaTask.java:89)
at com.mercury.infra.flowmngr.model.Step.executeStep(Step.java:79)
at com.mercury.infra.flowmngr.FlowManager.run(FlowManager.java:206)
at com.mercury.infra.wizard.WizardController$FlowManagerRunner.doInBackground(WizardController.java:87)
at com.hp.acm.swing.executor.SwingJob$SwingJobWorker.doInBackground(SwingJob.java:319)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at com.mercury.topaz.cmdb.server.manage.dal.ConnectionPoolFactory.schemaExists(ConnectionPoolFactory.java:84)
at com.hp.ucmdb.management.impl.DatabaseManagementImpl.schemaExists(DatabaseManagementImpl.java:185)
at com.hp.ucmdb.management.impl.DatabaseManagementImpl.connectCmdb8Database(DatabaseManagementImpl.java:172)
at com.hp.ucmdb.management.impl.DatabaseManagementImpl.connectCmdb9Database(DatabaseManagementImpl.java:160)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.hp.ucmdb.management.impl.CmdbManagementImpl$ContextClassLoaderInvocationHandler.invoke(CmdbManagementImpl.java:82)
at com.sun.proxy.$Proxy22.connectCmdb9Database(Unknown Source)
at com.mercury.topaz.upgrade.tasks.ConnectCmdbDbTask.execute(ConnectCmdbDbTask.java:41)
at com.mercury.infra.flowmngr.model.JavaTask.execute(JavaTask.java:79)
... 10 more
2016-08-10 10:14:56,165 [pool-1-thread-1] (NavigationRules.java:50) DEBUG - inputArg key : null, inputArg value is: null
2016-08-10 10:14:56,165 [pool-1-thread-1] (NavigationRules.java:57) INFO - navigationValue = failure
2016-08-10 10:14:56,165 [pool-1-thread-1] (Step.java:106) INFO - *** Step connect_oracle_cmdb_db was executed. Execution result : failure. Next step is: oracle_connect_credentials
2016-08-10 10:14:56,165 [pool-1-thread-1] (FlowManager.java:229) INFO - last_wait_step: oracle_connect_credentials
2016-08-10 10:14:56,199 [AWT-EventQueue-0] (UpgradeDbConnectCredentialsDescriptorHelper.java:34) DEBUG - handleError: [com.mercury.infra.flowmngr.exceptions.JavaTaskInstantiationException: Failed to instantiate java task com.mercury.topaz.upgrade.tasks.ConnectCmdbDbTask]
2016-08-10 10:14:56,200 [AWT-EventQueue-0] (UpgradeDbConnectCredentialsDescriptorHelper.java:39) DEBUG - handleError: error = [Failed to instantiate java task com.mercury.topaz.upgrade.tasks.ConnectCmdbDbTask]
2016-08-10 10:14:56,200 [AWT-EventQueue-0] (UpgradeDbConnectCredentialsDescriptorHelper.java:51) DEBUG - handleError: going to be handled by base class.

Can anyone help?

Thank you

  • Hi bbispo,

    assuming that you properly followed the step described in
    APM Upgrade Guide - BSM 9.25 or 9.26 to APM 9.30

    Chapter 2: Prerequisites
    10. Copy customized Java database connectivity properties (jdbc) - Oracle RAC (optional)

    and also executing the correct upgrade wizard,
    /opt/HP/BSM/bin/upgrade_wizard_run_from926.sh
    (as there is one for the upgrade from 9.25 as well)

    I would guess that there is an issue with the RTSM properties:
    Caused by: java.lang.NullPointerException
    at com.mercury.topaz.cmdb.server.manage.dal.ConnectionPoolFactory.schemaExists(ConnectionPoolFactory.java:84)
    at com.hp.ucmdb.management.impl.DatabaseManagementImpl.schemaExists(DatabaseManagementImpl.java:185)

    The connection information for the RTSM database is stored in the file <HPBSM>\odb\conf\cmdb.conf
    which on my system looks like this:

    #Created on: Fri Aug 05 16:19:42 CEST 2016
    #Fri Aug 05 16:19:42 CEST 2016
    dal.datamodel.db.name=VM013_RTSM
    dal.datamodel.db.type=SQLServer
    dal.datamodel.host.name=whateverhostname
    dal.datamodel.password=wUstVEolq3ff6CDC/rwPXg\=\=
    dal.datamodel.port=1433
    dal.datamodel.sid=
    dal.datamodel.user.name=sa

    It's for MS SQL, but that shouldn't matter. 
    Simply check if for example one line is missing or one entry has no value or a crap entry, for example
    dal.datamodel.port=
    or
    dal.datamodel.port=bladibla

    Greetings
    Siggi

  • Hi Siggi,

    Thank you very much for you quick reply. Yes i have followed the APM upgrade guide and did all those steps you mentioned.

    1) Uninstall BSM 9.26 GW and DPS 

    2) Install BSM 9.30 GW and DPS

    3) Copy customized jdbc.drivers.properties and bsm-tnsnames.ora to /opt/HP/BSM/conf and jdbc.properties to /opt/HP/BSM/odb/conf

    4) Launched upgrade_wizard_run_from926.sh from DPS

    When i launch upgrade_wizard_run_from926.sh i can successfully connect to MANAGEMENT and PROFILE schemas. Then when i try to connect to RTSM schema i get that error.

    I have enabled debug and i can see that it can connect to RTSM schema:

    2016-08-10 12:12:40,638 [pool-1-thread-1] (BasicSchemaValidatorTask.java:42) INFO - Check that the following tables exists [CM_CONFIGURATION] in database dbType=(ORACLE Server); hostName=dbrac632.corporativo.pt; dbName=POCHP_RTSM; userName=POCHP_RTSM; server=dbrac632.corporativo.pt; sid=hpbsm_prd; port=1521
    2016-08-10 12:12:40,639 [pool-1-thread-1] (BasicSchemaValidatorTask.java:63) DEBUG - Execute query select count(*) from CM_CONFIGURATION
    2016-08-10 12:12:40,639 [pool-1-thread-1] (DefaultJDBCDriverConfigurtor.java:288) INFO - Attempting to read JDBC Driver conf file: /opt/HP/BSM/conf/jdbc.drivers.properties
    2016-08-10 12:12:40,640 [pool-1-thread-1] (DefaultJDBCDriverConfigurtor.java:200) DEBUG - Loaded driver configuration properties: {ddmssql.allowPortWithNamedInstance=true , 200=ddmssql, ddmssql.User=${user}, jtds.prepareSQL=3, ddoracle.url=jdbc:mercury:oracle:TNSNamesFile=/opt/HP/BSM/conf/bsm-tnsnames.ora;TNSServerName=HPBSM_PRD, ddmssql.transactionMode=explicit, ddoracle.BatchPerformanceWorkaround=true, ddmssql.SendStringParametersAsUnicode=false, 100=ddoracle, mysql.user=${user}, ddoracle.Password=${password}, ddmssql.ApplicationName=Data Direct JDBC Driver, jtds.progName=jTDS JDBC Driver, mysql.password=${password}, ddoracle.MaxPooledStatements=0, ddoracle.LoginTimeout=30, ddoracle.User=${user}, jtds.sendStringParametersAsUnicode=false, 250=ddmssql, jtds.loginTimeout=30, ddmssql.MaxPooledStatements=5, ddmssql.class=com.mercury.jdbc.sqlserver.SQLServerDriver, ddmssql.LoginTimeout=30, jtds.class=net.sourceforge.jtds.jdbc.Driver, jtds.password=${password}, ddoracle.class=com.mercury.jdbc.oracle.OracleDriver, jtds.appName=jTDS JDBC Driver, jtds.url=jdbc:jtds:sqlserver://${host}:${port}/${database}, jtds.user=${user}, ddmssql.DatabaseName=${database}, jtds.charset=${charset}, mysql.class=com.mysql.jdbc.Driver, ddmssql.Password=${password}, ddoracle.ApplicationName=Data Direct JDBC Driver, ddoracle.WireProtocolMode=2, ddmssql.url=jdbc:mercury:sqlserver://${host}:${port}, 300=mysql, mysql.loginTimeout=30, mysql.url=jdbc:mysql://${host}:${port}/${database}?autoReconnect=true}
    2016-08-10 12:12:40,640 [pool-1-thread-1] (DefaultJDBCDriverConfigurtor.java:133) INFO - Following driver config will be used for db of type 'SQL Server':
    class = 'com.mercury.jdbc.sqlserver.SQLServerDriver', url = 'jdbc:mercury:sqlserver://${host}:${port}', info = {allowPortWithNamedInstance=true , ApplicationName=Data Direct JDBC Driver, DatabaseName=${database}, MaxPooledStatements=5, Password=${password}, LoginTimeout=30, SendStringParametersAsUnicode=false, User=${user}, transactionMode=explicit}
    2016-08-10 12:12:40,640 [pool-1-thread-1] (DefaultJDBCDriverConfigurtor.java:133) INFO - Following driver config will be used for db of type 'ORACLE Server':
    class = 'com.mercury.jdbc.oracle.OracleDriver', url = 'jdbc:mercury:oracle:TNSNamesFile=/opt/HP/BSM/conf/bsm-tnsnames.ora;TNSServerName=HPBSM_PRD', info = {ApplicationName=Data Direct JDBC Driver, MaxPooledStatements=0, Password=${password}, BatchPerformanceWorkaround=true, WireProtocolMode=2, LoginTimeout=30, User=${user}}
    2016-08-10 12:12:40,640 [pool-1-thread-1] (DefaultJDBCDriverConfigurtor.java:133) INFO - Following driver config will be used for db of type 'MSDE':
    class = 'com.mercury.jdbc.sqlserver.SQLServerDriver', url = 'jdbc:mercury:sqlserver://${host}:${port}', info = {allowPortWithNamedInstance=true , ApplicationName=Data Direct JDBC Driver, DatabaseName=${database}, MaxPooledStatements=5, Password=${password}, LoginTimeout=30, SendStringParametersAsUnicode=false, User=${user}, transactionMode=explicit}
    2016-08-10 12:12:40,640 [pool-1-thread-1] (DefaultJDBCDriverConfigurtor.java:133) INFO - Following driver config will be used for db of type 'mysql':
    class = 'com.mysql.jdbc.Driver', url = 'jdbc:mysql://${host}:${port}/${database}?autoReconnect=true', info = {user=${user}, password=${password}, loginTimeout=30}
    2016-08-10 12:12:40,709 [pool-1-thread-1] (BasicSchemaValidatorTask.java:81) INFO - Table CM_CONFIGURATION exists (row count 1)
    2016-08-10 12:12:40,716 [pool-1-thread-1] (BasicSchemaValidatorTask.java:50) INFO - Validation passed successfully
    2016-08-10 12:12:40,716 [pool-1-thread-1] (BasicSchemaValidatorTask.java:53) DEBUG - Leave BasicSchemaValidatorTask

    And then the error is when executing the Java task com.mercury.topaz.upgrade.tasks.ConnectCmdbDbTask

    I have checked and i don't have any cmdb.conf file.

    Thank you

  • Hi,

    thanks for the additional information, that's really really odd.
    They might be two different ways of accessing the RTSM depending on the mdoule it does. 
    Obviosuly part of APM can access the RTSM correctly, and others - who knows.
    I don't have a APM installation with Oracle RAC, so my testing abilites are quite limited.

    I only have two more ideas:

    - if you created a backup of the BSM 9.26 environment, restore the file 
    <HPBSM>\odb\conf\cmdb.conf,
    check that it looks valid and try again

    - disable RAC (I'm not a DBA, but I read that you can tell your Oracle RAC DB to behave like a "normal" Oracle DB) and try again

    Greetings
    Siggi

  • Hi,

    After you first reply the first thing i tried was to restore the cmdb.conf file from the other installation and no luck with that.

    Regarding the Oracle RAC, unfortunately i cannot ask that to DBA team as there are other instances running there, but thank you very much for trying to help.

    Kind Regards

    Bruno

  • We are facing the same issue when we upgrade from BSM 9.25 to APM 9.3.  We also have RAC DB.  The management DB connection is fine, so is profile DB. But RTSM DB connection fails.

    I am able to connect to the RTSM DB via TOAD.

    So I feel that RTSM DB is not looking at the same tns or DB config file.  In this chain, you mentioned odb/conf directory. But 9.25 does not have separate DB config fie there though.

    Could you please advise where I can check?

    Thanks,

    Rufeng

  • cmdb.confBSM 9.25 does not have cmdb.conf either. 

  • I understand it now.  RTSM uses separate config file.  The file name is

    /odb/conf/jdbc.properties.  If this file does not exist, please create one.

    Inside, the file, add two lines

    Oracle = ddoracle

    cmdb.url =jdbc:mercury:oracle:TNSNamesFile=<APM_HOME>\\conf\\bsmtnsnames.ora;TNSServerName=<SERVICE NAME>

    For example, in my case,

    Oracle = ddoracle
    cmdb.url = jdbc:mercury:oracle:TNSNamesFile=D:\\HPBSM\\conf\\bsm-tnsnames.ora;TNSServerName=BACD.WORLD;wireProtocolVersion=8

    This works. This is documented in the DB guide.  But not mentioned in the upgrade guide. 

    I hope this helps.

    Thanks!