IBM Support

Best practices for using JDBC drivers with Cognos Analytics 11.x

Question & Answer


What are the best practices for using JDBC drivers with Cognos Analytics 11.x?
What drivers are supported?
What are the "Do"-s and "Don't"-s?


Wrong use of JDBC drivers may cause a variety of issues, ranging from Cognos not starting up to connection issues and even data-related issues.


Cognos Analytics uses JDBC drivers for 2 purposes:
1) Connection to Content Store DB (and when applicable - Notification store and Audit DB).
2) JDBC data sources for DQM reporting and dashboards that are run by Query service.
To enable JDBC data- and content connections JDBC driver(s) must be copied to <CA11>/drivers directory.
There are some requirements:
1) One JDBC driver per DB type.
For example, in environment with Content store on MSSQL 2012 and data sources on MSSQL 2014 and 2016 we don't need 3 drivers. Only one JDBC driver that supports all 3 versions of the databases.
E.g. in case of MSSQL - JDBC driver 7.2 supports the following databases:
• Microsoft SQL Server 2017
• Microsoft SQL Server 2016
• Microsoft SQL Server 2014
• Microsoft SQL Server 2012
• Microsoft SQL Server 2008 R2
• Azure SQL Database
• Azure SQL Data Warehouse or Parallel Data Warehouse
• Azure SQL Managed Instance (Extended Private Preview)
So one driver would check the boxes for all databases we need in this example.
2) There must be no other drivers of the same DB type.
E.g. having MSSQL JDBC driver 7.2, 7.4 and 8 in the same drivers directory is NOT acceptable.
Multiple driver versions can cause java class loading issues, as each driver has the same class name. As a result wrong version of the class may be loaded.
Also there should be no drivers in other locations, only in <CA11>\drivers
At the same time, multiple drivers for different DB types are OK. E.g. having one driver for DB2, one driver for Oracle and one driver for MySQL would be fine.
3) JDBC driver must be compiled for JRE8
As Cognos Analytics runs on JRE8, using JDBC driver for JRE 11 or JRE 6 would not be allow.
For example, Oracle JDBC drivers have reference to JRE in the driver name: ojdbc6.jar, ojdbc8.jar, etc. Number is NOT a version of the driver, it's a version of JRE it's compiled for. There could be multiple versions of ojdbc8.jar - that come with different Oracle DB versions. We should always use ojdbc8.jar driver for the latest database version used in the environment. E.g. if there's a connection to Oracle 12 and Oracle 18 - get the ojdbc8.jar driver for Oracle 18, it will support Oracle 12 as well.
Similar principle applies to other DBs, e.g. MSSQL has mssql-jdbc-7.2.2.jre8.jar and mssql-jdbc-7.2.2.jre11.jar files in the same driver package. Here file names are more explicit, and mssql-jdbc-7.2.2.jre8.jar should be used.
Additional resources:

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSTSF6","label":"IBM Cognos Analytics"},"ARM Category":[{"code":"a8m50000000Cl4eAAC","label":"Cognos Connection Portal->Data server connections"},{"code":"a8m50000000Cl6sAAC","label":"Installation and Configuration->Cognos Configuration"},{"code":"a8m0z000000TN5vAAG","label":"Installation and Configuration->Content Store"},{"code":"a8m50000000Cl6nAAC","label":"Installation and Configuration->Data Sources"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"11.0.0;11.1.0"}]

Document Information

Modified date:
11 September 2020