Added by Bart van der Schans, last edited by Bartosz Oudekerk on May 28, 2008  (view change)

Labels:

repository repository Delete
slide slide Delete
oracle oracle Delete
Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.

Databases

Oracle 9.2 and 10 are known to work.

JDBC Drivers

The 9.2 driver works. From 1.2.13 the 10g driver also works.

Using CLOB for property values

The maximum varchar2 size is 4000 characters. To store larger property values you have to:

  • use at least 1.2.13
  • use the oracle 10g driver
  • change the varchar2 (4000) to CLOB in the database (schema)

Sample of a definition.xml for Oracle:

<?xml version="1.0"?>
<definition>
  <store name="default">
    <parameter name="tlock-timeout">120</parameter>
    <parameter name="cache-mode">full</parameter>
    <parameter name="object-cache-size">1000</parameter>
    <parameter name="permission-cache-size">1000</parameter>
    <parameter name="lock-cache-size">100</parameter>

    <parameter name="descriptors-cache-size">10000</parameter>
    <parameter name="descriptor-cache-size">10000</parameter>
    <parameter name="content-cache-size">10000</parameter>
    <parameter name="enable-content-caching">false</parameter>
    <parameter name="tx-content-cache-size">1000</parameter>
    <parameter name="content-cache-bytes">10000000</parameter>

    <parameter name="tx-content-cache-bytes">1000000</parameter>
    <parameter name="max-content-bytes-per-entry">50000</parameter>

    <parameter name="basicQueryClass">org.apache.slide.search.basic.LuceneBasicQuery</parameter>
    <parameter name="basicQueryEnvelopeClass">org.apache.slide.search.basic.LuceneBasicQueryEnvelope</parameter>

    <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
        <parameter name="adapter">org.apache.slide.store.impl.rdbms.OracleRDBMSAdapter</parameter>
        <parameter name="driver">oracle.jdbc.driver.OracleDriver</parameter>
        <parameter name="url">jdbc:oracle:thin:@127.0.0.1:1521:SLIDE</parameter>
        <parameter name="user">slide</parameter>
        <parameter name="password">secret</parameter>
        <parameter name="dbcpPooling">true</parameter>
        <parameter name="dbcp.testWhileIdle">true</parameter>
        <parameter name="dbcp.timeBetweenEvictionRunsMillis">900000</parameter>
        <parameter name="dbcp.validationQuery">SELECT 1 FROM DUAL</parameter>
        <parameter name="dbcp.maxActive">20</parameter>
        <parameter name="isolation">READ_COMMITTED</parameter>
        <parameter name="compress">false</parameter>
        <parameter name="use-rdbms-expression-factory">true</parameter>
        <parameter name="tlock-timeout">120</parameter>
    </nodestore>
    <contentstore>
      <reference store="nodestore"/>
      <parameter name="tlock-timeout">120</parameter>
    </contentstore>

    <securitystore>
      <reference store="nodestore"/>
    </securitystore>
    <lockstore>
      <reference store="nodestore"/>
    </lockstore>
    <revisiondescriptorsstore>
      <reference store="nodestore"/>
    </revisiondescriptorsstore>

    <revisiondescriptorstore>
      <reference store="nodestore"/>
    </revisiondescriptorstore>
  </store>
  <scope match="/" store="default"/>
</definition>

You have to:

  • Create a database SLIDE and a schema user with username "slide" and password "secret"
  • Apply the schema script: oracle_schema_slide.sql

    A lot of java based sql clients have problems with the trigger creation in the script. Use either the official Oracle tools or download TOAD.

Optionally add a dependency to the server/project.xml:

<!-- Oracle driver -->
    <dependency>
      <id>oracle:ojdbc14</id>
      <version>9.2.0.5</version>
      <properties><fortress.bundle>true</fortress.bundle></properties>
    </dependency>

Varchar2(4000) to CLOB conversion script

CREATE TABLE "NEW_PROPERTIES" (
	"VERSION_ID" NUMBER(10) NOT NULL, 
	"PROPERTY_NAMESPACE" VARCHAR2(255) NOT NULL, 
	"PROPERTY_NAME" VARCHAR2(255) NOT NULL, 
	"PROPERTY_VALUE" CLOB, 
	"PROPERTY_TYPE" VARCHAR2(255),
	"IS_PROTECTED" NUMBER(1) NOT NULL, 
	UNIQUE("VERSION_ID", "PROPERTY_NAMESPACE", "PROPERTY_NAME"), 
	FOREIGN KEY("VERSION_ID") REFERENCES "VERSION_HISTORY"("VERSION_ID")
) CACHE NOLOGGING
/
INSERT INTO NEW_PROPERTIES
(VERSION_ID,
PROPERTY_NAMESPACE,
PROPERTY_NAME,
PROPERTY_VALUE,
PROPERTY_TYPE,
IS_PROTECTED)
SELECT VERSION_ID,
PROPERTY_NAMESPACE,
PROPERTY_NAME,
PROPERTY_VALUE,
PROPERTY_TYPE,
IS_PROTECTED FROM PROPERTIES
/
DROP TABLE PROPERTIES
/
RENAME NEW_PROPERTIES TO PROPERTIES
/
COMMIT
/