Today I want to share a funny experience we had with a clean vCO 5.1 install … Having a freshly installed vCenter 5.1 with an integrated installation of vCO upon first startup the vCO Service did not start and took (15!) minutes to finally reach a state where it was between starting and stopping. The log files included lots of information where in the end we always read something about “OutOfMemory”. Changing heapsize or increasing server memory did not help at all.
2013-02-13 21:09:59.620+0100 WARN [RemotingServiceImpl] PermGen space java.lang.OutOfMemoryError: PermGen space 2013-02-13 22:04:35.397+0100 ERROR [STDERR] java.lang.OutOfMemoryError: PermGen space
After some investigation we found some interesting line regarding license issues:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select vmolicense0_.id as id451_, vmolicense0_.licenseDescription as licenseD2_451_, vmolicense0_.licenseOwner as licenseO3_451_, vmolicense0_.licenseString as licenseS4_451_, vmolicense0_.licenseTarget as licenseT5_451_ from vmo_licenseitem vmolicense0_]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query ... 2013-02-14 17:37:24.315+0100 WARN [JDBCExceptionReporter] SQL Error: 208, SQLState: S0002 2013-02-14 17:37:24.315+0100 ERROR [JDBCExceptionReporter] Invalid object name 'vmo_licenseitem'.
Checking the license in the Orchestrator Configuration did not show anything unusual. However when we connected to the DB itstelf via SQLCMD we could not query the table “vmo_licenseitem” just as mentioned in the log. However we could query “VMO_LicenseItem”. No way, we said. The DB server is case sensitive. Actual that was not the case. The DB server itself had a default for case insensitivity. However, as we quickly found out, the DB admin thought it was a good idea to have our orchestrator DB to be case sensitve:
SELECT DATABASEPROPERTYEX( 'ORCHESTRATOR', 'COLLATION') GO SQL_Latin1_General_CP1_CS_AS
In the end this was solved with an ALTER DATABASE. What really strikes me is, that the vCO Configuration created the DB tables in a mix of upper/lower case and the vCO service only queries/selects with lower case. – And does not perform a check on collation settings when starting up! This could have been easily detected by vCO as a pre-requirement check and would have saved us lots of time. – We will pass it on to the developers…