3

I have successfully set up a deployer against broker db running on Oracle, but it was necessary for me to use an SID. I attempted to configure the storage to use the oracle service name with no luck. I believe it is Oracle 11g, but will have to check the environment to be sure.

My configuration is as follows (with private info removed of course):

<Storage Type="persistence" Id="defaultdb" dialect="ORACLESQL" Class="com.tridion.storage.persistence.JPADAOFactory">
    <Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" />
    <DataSource Class="oracle.jdbc.pool.OracleDataSource">
        <Property Name="driverType" Value="thin"/>
        <Property Name="networkProtocol" Value="tcp"/>
        <Property Name="serverName" Value="THE_SERVER_ADDRESS"/>
        <Property Name="portNumber" Value="1521"/>
        <Property Name="databaseName" Value="SID"/>
        <Property Name="user" Value="some_user"/>
        <Property Name="password" Value="some_password"/>
    </DataSource>
</Storage>

Not knowing the proper placement, I made two different attempts with the service name in the serverName and the databaseName. In all attempts to use the service name I got JDBC connection exception. I don't have the exception handy at the moment, but will update the post with it very soon.

Does anyone have experience with properly configuring cd_storage against an Oracle instance using the service name and NOT the SID. I do not wish to have any configuration requiring an SID if at all possible.

  • What version of Tridion are you using? – Peter Kjaer Dec 30 '13 at 9:47
  • I am using Tridion 2013 – code-monkee Jan 4 '14 at 5:14
6

You can use Oracle's JDBC thin driver syntax like so:

<Storage
    Type="persistence"
    Id="database"
    dialect="ORACLESQL"                                                                 
    Class="com.tridion.storage.persistence.JPADAOFactory"
    Url="jdbc:oracle:thin:@(DESCRIPTION=
        (ADDRESS=(PROTOCOL=TCP)(HOST=HOSTNAME)(PORT=PORT))
        (CONNECT_DATA=
            (SERVER=DEDICATED)
            (SERVICE_NAME=SERVICE_NAME)
            (FAILOVER_MODE=(TYPE=select)(METHOD=BASIC)(RETRIES=180)
            (DELAY=5))
        ))"
    Username="SCHEMA_USER_USERNAME"
    Password="SCHEMA_USER_PASSWORD"
    Driver="oracle.jdbc.driver.OracleDriver">

More options, like load balancing, are also possible.

| improve this answer | |
  • 1
    Works. Looks similar to my tnsnames.ora connection string. – Andrew William Ross Feb 15 '18 at 18:44
3

Have you tried serviceName instead of databaseName? SDL Tridion online manual has an instruction for the property when using service name in Oracle. That instruction can be found in "Configuring content storage" section (login required).

| improve this answer | |
  • 1
    I appreciate your input. I don't think I stated it very clearly in the original question, but I did try the service name in place of the database name as suggested and also seen in the doc link you posted. I received the following exception from trying this: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor – code-monkee Jan 4 '14 at 5:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.