This page last changed on Jun 18, 2009 by rosie@atlassian.com.

When using JIRA with Oracle, the Oracle 10g JDBC driver needs to have the SetBigStringTryClob property set to true to store text of unlimited size in the database. If this property is not set, you will have problems modifying JIRA workflows and storing large (over 32k) text strings.

The SetBigStringTryClob property needs to be set in the application server, where the database connection is defined (the 'datasource' definition). The definition depends on the application server that you are using. Please refer to one of the sections below that is applicable to your application server to determine what to add to the datasource definition.

The same thing applies to I-Net's JDBC driver, except the property is called streamstolob.

Tomcat 4 and 5.0

Add the section shown in bold to where JIRA is configured (usually conf/server.xml):

<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/JiraDS">
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@<database host machine>:<port>:<SID></value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>...</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>...</value>
      </parameter>

      <parameter>
         <name>connectionProperties</name>
         <value>SetBigStringTryClob=true</value>
      </parameter>

      <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
    </ResourceParams>

Tomcat 5.5 (JIRA Standalone)

Modify the section where JIRA is configured, usually conf/Catalina/localhost/jira.xml or conf/server.xml (in JIRA Standalone):

<Context path="/jira" docBase="path/to/atlassian-jira-3.11.war">
  <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
    username="...."
    password="...."
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@<database host machine>:<port>:<SID>"
    connectionProperties="SetBigStringTryClob=true" />
  <Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"
    factory="org.objectweb.jotm.UserTransactionFactory"
    jotm.timeout="60"/>
  <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>
</Context>

Orion / OC4J (Oracle iAS)

Orion and OC4J are not capable of passing arbitrary properties directly to the JDBC driver. These app servers can pass properties to the underlying Data Source if it has appropriate "setter" methods for them. Unfortunately the Data Sources that Oracle ships with its JDBC drivers do not have an appropriate "setter" method for the SetBigStringTryClob property.

To get around this problem please use the com.atlassian.oracle.OracleConnectionPoolProxyDataSource which is available from the atlassian-oracle-orion-compat jar file. To use this Data Source please follow these instructions:

  1. Download the latest atlassian-oracle-orion-compat from our repository. (For example, the atlassian-oracle-orion-compat-1.0.jar file).
  2. Put the downloaded jar file into the same directory as the ojdbc14.jar file. For Orion, this is the lib directory. For OC4J the directory is called applib.
  3. Edit the config/data-sources.xml file and specify the data source as follows:
    <data-source
    class="com.atlassian.oracle.OracleConnectionPoolProxyDataSource"
    name="<name>"
    location="<location>"
    xa-location="<xa-location>"
    ejb-location="<ejb-location>"
    url="<url>"
    username="<login>"
    password="<password>"
    inactivity-timeout="30"
    >
    <property name="setBigStringTryClob" value="true" />
    </data-source>
    
    Note the small 's' in setBigStringTryClob here -- this fix will not work otherwise. Also note that this small 's' only applies to Orion/OC4J. All other app servers need a big 'S'.

OC4J 10.1.3.x

OC4J 10.1.3.x no longer uses the <data-source> element, and we are not aware of another way of passing through the setBigStringTryClob property. See JRA-12564 for details.

This means that you cannot store text strings longer than 32K in Oracle for OC4J 10.1.3.x.

Other app servers

Consult the relevant app server documentation to find how to add the property.

Document generated by Confluence on Oct 06, 2009 00:26