johnwinter
johnwinter

Reputation: 3624

Content deployer error when publishing to Oracle broker db

I'm getting an error when trying to deploy content to an oracle broker database (I'm running Tridion 2011 sp1). I've had a search on the SDL Tridion forum and cannot find anyone that's had the same issue.

The error message in the cme is:

Committing Deployment Failed
 Phase: Deployment Prepare Commit Phase failed, Unable to prepare transaction: tcm:0-55-66560,
 org.hibernate.exception.SQLGrammarException: could not execute query, 
 org.hibernate.exception.SQLGrammarException: could not execute query, Unable to prepare transaction:
  tcm:0-55-66560, org.hibernate.exception.SQLGrammarException: could not execute query, 
  org.hibernate.exception.SQLGrammarException: could not execute query

And in the deployer logs i get the following:

2012-02-24 15:07:27,866 WARN  DeployPipelineExecutor - Phase: Deployment Prepare Commit Phase failure message: Unable to prepare transaction: tcm:0-55-66560, org.hibernate.exception.SQLGrammarException: could not execute query, org.hibernate.exception.SQLGrammarException: could not execute query for transaction: tcm:0-55-66560
2012-02-24 15:07:27,866 DEBUG DeployPipelineExecutor - Failure in Phase: Deployment Prepare Commit Phase attempt: 11 for transaction: tcm:0-55-66560
2012-02-24 15:07:27,866 ERROR DeployPipelineExecutor - Final attempt in Phase: Deployment Prepare Commit Phase failed for transaction: tcm:0-55-66560
2012-02-24 15:07:27,875 ERROR DeployPipelineExecutor - Original stacktrace for transaction: tcm:0-55-66560
com.tridion.deployer.ProcessingException: Unable to prepare transaction: tcm:0-55-66560, org.hibernate.exception.SQLGrammarException: could not execute query, org.hibernate.exception.SQLGrammarException: could not execute query
        at com.tridion.deployer.phases.PreCommitPhase.handleFailure(PreCommitPhase.java:120) ~[cd_deployer.jar:na]
        at com.tridion.deployer.phases.PreCommitPhase.execute(PreCommitPhase.java:101) ~[cd_deployer.jar:na]
        at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na]
        at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na]
        at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na]
        at com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na]
        at com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417) [na:1.5.0_11]
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) [na:1.5.0_11]
        at java.util.concurrent.FutureTask.run(FutureTask.java:123) [na:1.5.0_11]
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) [na:1.5.0_11]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) [na:1.5.0_11]
        at java.lang.Thread.run(Thread.java:595) [na:1.5.0_11]
2012-02-24 15:07:27,875 INFO  TransactionPersistence - Removing deployment transaction information: tcm:0-55-66560
2012-02-24 15:07:27,876 ERROR DeployPipelineExecutor - Unable to start processing deployment package with transactionId: tcm:0-55-66560
2012-02-24 15:07:27,880 DEBUG DeployPipelineExecutor - Checking if transaction is completed: tcm:0-55-66560 is true
2012-02-24 15:07:27,880 INFO  DeployPipelineExecutor - Transaction is completed: tcm:0-55-66560
2012-02-24 15:07:27,882 INFO  DeployPipelineExecutor - Finished executing deployment pipeline for: tcm:0-55-66560 in 2274 ms.

EDIT:

Here is the node from the cd_storage_conf.xml file:

<Storages>
    <Storage Type="persistence" Id="ddeploy" 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="secret"/>
                <Property Name="portNumber" Value="1526"/>
                <Property Name="databaseName" Value="secret"/>
                <Property Name="user" Value="secret"/>
                <Property Name="password" Value="secret"/>
            </DataSource>
    </Storage> 

    <Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="defaultFile" defaultFilesystem="false">
        <Root Path="/htdocs/en_US/" />
    </Storage>

    <Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="defaultDataFile" defaultFilesystem="true" defaultStorage="true">
        <Root Path="/htdocs/en_US/data" />
    </Storage>
</Storages>

And the item types

<ItemTypes defaultStorageId="ddeploy" cached="false">
    <Item typeMapping="Page" cached="false" storageId="defaultFile"/>
    <Item typeMapping="Binary" cached="false" storageId="defaultFile"/>
</ItemTypes>

Any help would be greatly appreciated.

Upvotes: 4

Views: 962

Answers (2)

johnwinter
johnwinter

Reputation: 3624

Doh! - I can confirm the issue here was that the oracle database user did not have access to the correct schema.

Still if anyone searches here for the same issue, they'll know the correct place to look :)

Upvotes: 4

Dominic Cronin
Dominic Cronin

Reputation: 6191

The error message indicates that the SQL query generated by hibernate doesn't execute properly on your database. Can you double check your storage config (perhaps post the <Storage/> element here. In particular, can you check that the dialect attribute is correct.

Upvotes: 2

Related Questions