Summary
Error
When running NewDbTool.bat it may fail with timeout errors. In newDbTool.log we can see errors like:
D:\hp\UCMDB\UCMDBServer\tools\dbscripts>newDbTool.bat consistency --preview
Thu 08/03/2017 15:58:17.96
Running db tool with the following parameters: consistency --preview
2017-08-03 15:58:20,135 INFO [main] - Running tool: consistency [preview mode = true customerId=1]
2017-08-03 15:58:21,976 INFO [main] - DB TYPE = SQLServer
2017-08-03 15:58:21,976 INFO [main] - DB NAME = ucmdb_cmdb
2017-08-03 15:58:21,976 INFO [main] - DB HOST = srvomucmdb
2017-08-03 15:58:21,976 INFO [main] - DB PORT = 1433
2017-08-03 15:58:21,976 INFO [main] - DB USER = ucmdb10
2017-08-03 15:58:23,770 INFO [main] - Analyzing CIs that exist in the root table and don't exist in any concrete CDM
table
2017-08-03 15:58:35,751 INFO [main] - Finished - found records [ 0 ]
2017-08-03 15:58:35,751 INFO [main] - Analyzing relations that exist in root table and don't exist in concrete CDM ta
bles
2017-08-03 15:58:36,812 INFO [main] - Finished - found records [ 0 ]
2017-08-03 15:58:36,812 INFO [main] - Analyzing data that exist in concrete CDM tables but don't exist in ROOT table
2017-08-03 15:58:37,919 INFO [main] - Analyzing CIs:
2017-08-03 15:58:44,378 INFO [main] - Analyzing Relations:
2017-08-03 15:58:45,283 INFO [main] - Finished - found totally [ 0 ] objects
2017-08-03 15:58:45,298 INFO [main] - Analyzing data that exist in list attributes table and doesn't exist in root
2017-08-03 15:58:45,548 INFO [main] - Finished. Found ids : [ 0 ]
2017-08-03 15:58:45,548 INFO [main] - Analyzing broken relations whose end1/end2 doesn't exist in the root table
2017-08-03 15:58:49,682 INFO [main] - Count By Type:
2017-08-03 15:58:49,682 INFO [main] - dependency 5
2017-08-03 15:58:49,682 INFO [main] - composition 2
2017-08-03 15:58:49,682 INFO [main] - Finished - found records [ 7 ]
2017-08-03 15:58:49,682 INFO [main] - Analyzing broken relations whose end1/end2 doesn't exist in any of concrete CDM
tables
2017-08-03 16:08:49,774 ERROR [main] - Failed to run the db tool : [task: consistency, previewMode: preview]
com.mercury.topaz.cmdb.server.manage.dal.CmdbDalException: [ErrorCode [-2147483648] undefined error code]
SQL error executing statement
SELECT L.CMDB_ID, L.A_ROOT_CLASS, L.END1_ID, L.END2_ID
FROM LINK_1 L
WHERE NOT EXISTS (SELECT C.CMDB_ID
FROM OBJECT_1 C
WHERE C.CMDB_ID = L.END1_ID)
OR
NOT EXISTS (SELECT C.CMDB_ID
FROM OBJECT_1 C
WHERE C.CMDB_ID = L.END2_ID)
at com.mercury.topaz.cmdb.server.manage.dal.jdbc_template.JDBCTemplate.executeQuery(JDBCTemplate.java:630)
at com.mercury.topaz.cmdb.server.manage.dal.jdbc_template.JDBCTemplate.executeQuery(JDBCTemplate.java:569)
at com.mercury.topaz.cmdb.server.manage.dal.jdbc_template.JDBCTemplate.executeQuery(JDBCTemplate.java:525)
at com.mercury.topaz.cmdb.server.manage.dal.jdbc_template.JDBCTemplate$executeQuery$0.call(Unknown Source)
at com.hp.ucmdb.dbtool.data.access.dao.GroovyDalDaoSupport.execSqlQuery(GroovyDalDaoSupport.groovy:50)
at com.hp.ucmdb.dbtool.data.access.dao.GroovyDalDaoSupport.execSqlQuery(GroovyDalDaoSupport.groovy)
at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSit
e.java:190)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174)
at com.hp.ucmdb.dbtool.data.access.dao.consistency.preview.DbToolConsistencyPreviewDaoImpl.getLinksWithInvalidEn
d1OrEnd2ByCDM(DbToolConsistencyPreviewDaoImpl.groovy:221)
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:497)
at com.mercury.topaz.cmdb.server.manage.dal.dao.DaoFactory$TransactionProxy$ProxyDalAbstractCommand.perform(DaoF
actory.java:155)
at com.mercury.topaz.cmdb.server.manage.dal.DalAbstractCommand$FlowControlDalCommandExecutor.execute(DalAbstract
Command.java:36)
at com.mercury.topaz.cmdb.shared.manage.flowmanagement.api.FlowManager.execute(FlowManager.java:227)
at com.mercury.topaz.cmdb.shared.manage.flowmanagement.api.FlowManager.execute(FlowManager.java:222)
at com.mercury.topaz.cmdb.server.manage.dal.DalAbstractCommand.execute(DalAbstractCommand.java:54)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalJdbcDAO$CmdbDalDeadlockRetriable.performAction(CmdbDalJdbcDAO
.java:120)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalJdbcDAO$CmdbDalDeadlockRetriable.performAction(CmdbDalJdbcDAO
.java:105)
at com.mercury.topaz.cmdb.shared.util.retry.impl.DefaultRetriableExecutorImpl.doExecute(DefaultRetriableExecutor
Impl.java:37)
at com.mercury.topaz.cmdb.shared.util.retry.impl.AbstractRetriableExecutor.execute(AbstractRetriableExecutor.jav
a:37)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalJdbcDAO.executeQuery(CmdbDalJdbcDAO.java:61)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalJdbcDAO.executeQuery(CmdbDalJdbcDAO.java:53)
at com.mercury.topaz.cmdb.server.manage.dal.dao.DaoFactory$TransactionProxy.invoke(DaoFactory.java:135)
at com.sun.proxy.$Proxy26.getLinksWithInvalidEnd1OrEnd2ByCDM(Unknown Source)
at com.hp.ucmdb.dbtool.data.access.dao.consistency.preview.DbToolConsistencyPreviewDao$getLinksWithInvalidEnd1Or
End2ByCDM$4.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
at com.hp.ucmdb.dbtool.processors.consistency.PreviewModeProcessorHelper.examineBrokenLinksByCDMTable(PreviewMod
eProcessorHelper.groovy:113)
at com.hp.ucmdb.dbtool.processors.consistency.PreviewModeProcessorHelper$examineBrokenLinksByCDMTable$5.callCurr
ent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
at com.hp.ucmdb.dbtool.processors.consistency.PreviewModeProcessorHelper.executeConsistencyChecks(PreviewModePro
cessorHelper.groovy:33)
at com.hp.ucmdb.dbtool.processors.consistency.PreviewModeProcessorHelper$executeConsistencyChecks.call(Unknown S
ource)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at com.hp.ucmdb.dbtool.processors.consistency.ConsistencyDbToolProcessor.runPreviewMode(ConsistencyDbToolProcess
or.groovy:30)
at com.hp.ucmdb.dbtool.processors.GenericDbToolProcessor.execute(GenericDbToolProcessor.groovy:34)
at com.hp.ucmdb.dbtool.processors.Processor$execute.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:80)
at com.hp.ucmdb.dbtool.main.DbToolRunner.runDbTool(DbToolRunner.groovy:22)
at com.hp.ucmdb.dbtool.main.DbTool.main(DbTool.java:12)
Caused by: com.mercury.topaz.cmdb.server.manage.dal.CmdbDalException: [ErrorCode [-2147483648] undefined error code]
Can't execute prepared statement [
SELECT L.CMDB_ID, L.A_ROOT_CLASS, L.END1_ID, L.END2_ID
FROM LINK_1 L
WHERE NOT EXISTS (SELECT C.CMDB_ID
FROM OBJECT_1 C
WHERE C.CMDB_ID = L.END1_ID)
OR
NOT EXISTS (SELECT C.CMDB_ID
FROM OBJECT_1 C
WHERE C.CMDB_ID = L.END2_ID)
], due to exception: java.sql.SQLTimeoutException: [mercury][SQLServer JDBC Driver]Execution timeout expire
d.
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalPreparedStatementImpl.executeQuery(CmdbDalPreparedStatementIm
pl.java:365)
at com.mercury.topaz.cmdb.server.manage.dal.jdbc_template.JDBCTemplate.executeQuery(JDBCTemplate.java:624)
... 54 more
Caused by: java.sql.SQLTimeoutException: [mercury][SQLServer JDBC Driver]Execution timeout expired.
at com.mercury.jdbc.sqlserverbase.ddcw.b(Unknown Source)
at com.mercury.jdbc.sqlserverbase.ddcw.a(Unknown Source)
at com.mercury.jdbc.sqlserverbase.ddcv.b(Unknown Source)
at com.mercury.jdbc.sqlserverbase.ddcv.a(Unknown Source)
at com.mercury.jdbc.sqlserverbase.dde7.a(Unknown Source)
at com.mercury.jdbc.sqlserverbase.dde7.v(Unknown Source)
at com.mercury.jdbc.sqlserverbase.ddd2.executeQuery(Unknown Source)
at com.mercury.jdbc.sqlserverbase.ddd6.executeQuery(Unknown Source)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalPreparedStatementImpl$FlowControlQueryExecuter.execute(CmdbDa
lPreparedStatementImpl.java:604)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalPreparedStatementImpl$FlowControlQueryExecuter.execute(CmdbDa
lPreparedStatementImpl.java:596)
at com.mercury.topaz.cmdb.shared.manage.flowmanagement.api.FlowManager.execute(FlowManager.java:227)
at com.mercury.topaz.cmdb.server.manage.dal.CmdbDalPreparedStatementImpl.executeQuery(CmdbDalPreparedStatementIm
pl.java:356)
... 55 more
Thu 08/03/2017 16:08:49.89
Cause
SQL Timeout Exception
Fix
Note: Make sure that there are no extra spaces at the end of each line in jdbc.properties.
jdbc.properties file creation procedure
1. create the file <UCMDBServer>\conf\jdbc.properties
2. Add into the file:
For MSSQL
SQLServer=ddmssql
ddmssql.QueryTimeout=3600
For ORACLE
Oracle=ddoracle
ddoracle.QueryTimeout=3600
The timeout is in seconds.