Privilégios para Conexão com banco de dados oracle
11/08/2008 00:00
0
Pessoal, bom dia.

Estou tentando executar uma aplicação simples grails para trazer uma listagem dos registros de uma tabela de um banco de dados oracle já existente. (para isto criei a classe de domínio com os campos iguais ao da tabela)

Porém ao executar o comando grails run-app o seguinte esta acontecendo:


java.sql.SQLException: ExceþÒo de E/S: The Network Adapter could not establish t
he connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv
erConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolable
ConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(Bas
icDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou
rce.java:851)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource
.java:540)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at RunApp_groovy$_run_closure2_closure7.doCall(RunApp_groovy:69)
at RunApp_groovy$_run_closure2_closure7.doCall(RunApp_groovy)
at Init_groovy$_run_closure6.doCall(Init_groovy:131)
at RunApp_groovy$_run_closure2.doCall(RunApp_groovy:68)
at RunApp_groovy$_run_closure2.doCall(RunApp_groovy)
at RunApp_groovy$_run_closure1.doCall(RunApp_groovy:60)
at RunApp_groovy$_run_closure1.doCall(RunApp_groovy)
at gant.Gant.dispatch(Gant.groovy:271)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.processTargets(Gant.groovy:436)
at gant.Gant.processArgs(Gant.groovy:372)
2008-08-11 09:37:45.994::INFO: Started SelectChannelConnector@0.0.0.0:8080


Estou suspeitando que seja falta de permissão. Existe alguma maneira no grails de que ao executar o grails run-app, o framework não interfira no banco de dados já existente? E o banco de dados utilizado apenas nas consultas nas web-pages?

Segue meu arquivo DataSource.groovy


dataSource &#123;
pooled = true
driverClassName = &quot;oracle.jdbc.OracleDriver&quot;
username = &quot;xxx&quot;
password = &quot;xxxxxx&quot;
&#125;
hibernate &#123;
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='org.hibernate.cache.EhCacheProvider'
&#125;
// environment specific settings
environments &#123;
development &#123;
dataSource &#123;
dbCreate = &quot;update&quot; // one of 'create', 'create-drop','update'
url = &quot;jdbc&#58;oracle&#58;thin&#58;@10.242.32.212&#58;1521&#58;XX&quot;
&#125;
&#125;
test &#123;
dataSource &#123;
dbCreate = &quot;update&quot;
url = &quot;jdbc&#58;oracle&#58;thin&#58;@10.242.32.212&#58;1521&#58;XX&quot;
&#125;
&#125;
production &#123;
dataSource &#123;
dbCreate = &quot;update&quot;
url = &quot;jdbc&#58;oracle&#58;thin&#58;@10.242.32.212&#58;1521&#58;XX&quot;
&#125;
&#125;
&#125;


Att,
Thiago[/code]
Tags: Grails


0
No caso vc já tem a tabela criada, e quer apenas realizar CRUDs nela? Neste caso retire a linha:


dbCreate = &quot;update&quot; // one of 'create', 'create-drop','update'


Mas se vc espera que o grails crie a tabela no banco para voce, é necessário que o usuário que vc configurou nele tenha permissão para isto.
11/08/2008 00:00


0
Tentei removendo a linha, mas o erro ainda persiste. Não tenho certeza se esta relacionado à permissão. Mas se for queria saber se existe alguma alternativa, pois não teho usuário com permissão para este banco


Could not get Connection for extracting meta data; nested exception is org.sp
ringframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connecti
on; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot creat
e PoolableConnectionFactory (ExceþÒo de E/S: The Network Adapter could not estab
lish the connection):
java.sql.SQLException: ExceþÒo de E/S: The Network Adapter could not establish t
he connection
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
va:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv
erConnectionFactory.java:37)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolable
ConnectionFactory.java:290)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(Bas
icDataSource.java:877)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou
rce.java:851)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource
.java:540)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Native Method)
at RunApp_groovy$_run_closure2_closure7.doCall(RunApp_groovy:69)
at RunApp_groovy$_run_closure2_closure7.doCall(RunApp_groovy)
at Init_groovy$_run_closure6.doCall(Init_groovy:131)
at RunApp_groovy$_run_closure2.doCall(RunApp_groovy:68)
at RunApp_groovy$_run_closure2.doCall(RunApp_groovy)
at RunApp_groovy$_run_closure1.doCall(RunApp_groovy:60)
at RunApp_groovy$_run_closure1.doCall(RunApp_groovy)
at gant.Gant.dispatch(Gant.groovy:271)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.processTargets(Gant.groovy:436)
at gant.Gant.processArgs(Gant.groovy:372)
2008-08-11 11:28:37.794::INFO: Started SelectChannelConnector@0.0.0.0:8080
11/08/2008 00:00


0
OBS: O usuário e senha que estou passando no DataSource.groovy tem permissão apenas para consultas.
11/08/2008 00:00


0
vc colocou certo lah o jar do jdbc na pasta lib? Está conseguindo acessar o banco pelo sqlDeveloper?

eu conecto no oracle igual a vc, a unica linha que muda é esta:


cache.provider_class='com.opensymphony.oscache.hibernate.OSCacheProvider'


Tente desta forma, quem sabe resolva <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->
11/08/2008 00:00


0
Coloquei sim.

Coloquei este: ojdbc14.jar

Estou pensando que pode ser algo relacionado à versão do Oracle e a versão do jar
11/08/2008 00:00


0
Fausto, como eu suspeitava. Peguei uma outra jar aqui na minha máquina e funcionou, porém, agora o erro é outro. Consigo entrar na aplicação pelo browser, mas na hora de listar, ocorre o seguinte erro:


Message&#58; could not execute query; nested exception is org.hibernate.exception.SQLGrammarException&#58; could not execute query
Caused by&#58; org.springframework.dao.InvalidDataAccessResourceUsageException&#58; could not execute query; nested exception is org.hibernate.exception.SQLGrammarException&#58; could not execute query
Class&#58; XiControleEtapasController
At Line&#58; [10]
Code Snippet&#58;
10&#58; [ xiControleEtapasList&#58; XiControleEtapas.list( params ) ]
11&#58; &#125;


Você passou por algo parecido utilizando oracle?

Att, Thiago
11/08/2008 00:00


0
Coloque ali na configuração do DataSource a linha
logSql = true


ele vai mostrar como o hibernate está montando as querys, no console. Talvez seja só erro de sintaxe.
11/08/2008 00:00


0
Achei o motivo.

Caused by: java.sql.SQLException: ORA-00904: &quot;THIS_&quot;.&quot;VERSION&quot;: invalid identifier


Quando deixo que o grails crie as tabelas, ele insere automaticamente os campos id e version. Porém na tabela que tenho do banco de dados estes 2 campos não existem.

Tem alguma maneira de eu editar os sqls que são gerados pelo grails, para remover estes campos?
11/08/2008 00:00


0
Ter tem, mas a coluna version é utilizada pelo hibernate para o &quot;optimistic locking&quot;.

tente na classe que representa a tabela (model) colocar isso:


static mapping = &#123;
version false
columns &#123;
id column&#58;'coluna_da_sua_chave_primaria'
&#125;

&#125;



Veja se isto resolve.

Aqui fala mais sobre o assunto http&#58;//www.grails.org/GORM+-+Mapping+DSL
11/08/2008 00:00


0
Não resolveu não. Tavez isso funcione na hora da geração do banco de dados, aonde o grails não criaria os campos id e version.

Mas no meu caso aqui é que a tabela já esta pronta no banco de dados, e eu não posso alterar nada na sua estrutura. (nem permissão para isto eu tenho).
11/08/2008 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto