Erro no implementador de conteúdo ao publicar no banco de dados do corretor Oracle
Pergunta
Estou recebendo um erro ao tentar implantar conteúdo em um banco de dados do Oracle Broker (estou executando o Tridion 2011 sp1).Fiz uma pesquisa no fórum SDL Tridion e não consigo encontrar ninguém que tenha tido o mesmo problema.
A mensagem de erro no cme é:
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
E nos logs do implantador recebo o seguinte:
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.
EDITAR:
Aqui está o nó do arquivo cd_storage_conf.xml:
<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>
E os tipos de itens
<ItemTypes defaultStorageId="ddeploy" cached="false">
<Item typeMapping="Page" cached="false" storageId="defaultFile"/>
<Item typeMapping="Binary" cached="false" storageId="defaultFile"/>
</ItemTypes>
Qualquer ajuda seria muito apreciada.
Solução
Dá!- Posso confirmar que o problema aqui foi que o usuário do banco de dados Oracle não teve acesso ao esquema correto.
Ainda assim, se alguém pesquisar aqui pelo mesmo problema, saberá o lugar correto para procurar :)
Outras dicas
A mensagem de erro indica que a consulta SQL gerada pelo hibernate não é executada corretamente no seu banco de dados.Você pode verificar sua configuração de armazenamento (talvez poste o elemento <Storage/> aqui.Em particular, você pode verificar se o atributo dialeto está correto.