Connections Cognos for Metrics and Oracle 11 RAC Cluster
In a recent project, we struggled with the Cognos installation and configuration for Connections 5.0 Metrics against an Oracle 11 RAC Cluster.
For the installation of Connections components, we can use the Oracle RAC cluster directly (through it’s load balanced address), instead of simple database connections (just a database server and port), but for Cognos, this does not work.
The difference is explained here : http://www-01.ibm.com/support/docview.wss?uid=swg21344465
For Oracle database only the following items are specified in Cognos Configuration to establish the connection.
1) Database server and port number. You can use a fully qualified server name
2) User ID and password. User ID is the Oracle schema to be used for the content store.
3) Service name. This should have the same value as the SERVICE_NAME or SID of the appropriate entry in a valid tnsnames.ora file.
For Oracle database (Advanced) the connection is made using an Oracle Net8 keyword-value pair. The following items need to be specified in Cognos Configuration.
1) User ID and password. User ID is the Oracle schema to be used for the content store.
2) Database specifier. This is the Oracle Net8 keyword-value pair for the connection. It is should be an entire entry from a tnsnames.ora file without the carriage returns. Here is an example:
(description=(address=(host=myhost)(protocol=tcp)(port=1521)(connect_data=(s id=(orcl)))))
So our Oracle cluster consists of 2 database servers, and during installation, we configure Cognos to directly connect to 1 of the 2 database servers.
After installation, we change the configuration to use the RAC Cluster address, so we have High availability.
This is a trick that we’ve had to use in the past for installations of Portal and Connections at other clients.
For Cognos, however, this is not properly documented and it had us puzzled for a few months. We actually ran with Cognos configured to 1 of the 2 database servers, and this caused us quite a bit of trouble (as you can imagine).
In the end, my colleague found a solution for this problem by changing the CognosBI/cogstartup.xml file
from this
...
<crn:parameter name="CM" opaque="true">
<crn:value>
<crn:parameter name="outputCMReportToFile">
<crn:value xsi:type="xsd:boolean">false</crn:value>
</crn:parameter>
<crn:instances name="database">
<crn:instance name="IBM Cognos Content Store" class="**Oracle**">
<crn:parameter name="server">
<crn:value xsi:type="cfg:hostPort">**oracledatabasehost:**1521</crn:value>
</crn:parameter>
<crn:parameter name="user">
<crn:value xsi:type="cfg:credential" encrypted="true"><password></crn:value>
</crn:parameter>
<crn:parameter name="servicename">
<crn:value xsi:type="xsd:string">**SERVICENAME**</crn:value>
</crn:parameter>
</crn:instance>
</crn:instances>
</crn:value>
</crn:parameter>
...
to this
...
<crn:parameter name="CM" opaque="true">
<crn:value>
<crn:parameter name="outputCMReportToFile">
<crn:value xsi:type="xsd:boolean">false</crn:value>
</crn:parameter>
<crn:instances name="database">
<crn:instance name="IBM Cognos Content Store" class="**OracleAdvanced**">
<crn:parameter name="user">
<crn:value xsi:type="cfg:credential" encrypted="true"><password></crn:value>
</crn:parameter>
<crn:parameter name="specifier">
<crn:value xsi:type="xsd:string">(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=**oracledatabasehost**(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=**SERVICENAME**)))</crn:value>
</crn:parameter>
</crn:instance>
</crn:instances>
</crn:value>
</crn:parameter>
...
Restart Cognos and it’s now configured to use the RAC Cluster like it’s supposed to.