Conexão BD Oracle remoto script

Prezados,

Preciso conectar em um banco de dados Oracle 10g remoto, para executar algumas consultas (sistema de ocorrências operacionais) e apresentar os dados nas telas de operação do supervisório Elipse E3.
Porém o usuário que me foi concedido tem bastante restrições. Não tenho acesso às tabelas diretamente, somente através de Sinônimos. Criei o objeto DBServer na aplicação e o teste de conexão foi bem sucedido, no entanto ao criar qualquer E3Query o mesmo apresenta erros por não achar nenhuma tabela.

Não seria este o problema, pois iria usar consultas SQL personalizadas, só que não consigo retornar resultados (embora consiga normalmente no SQL Developer por ex.).

Se não for possível pelo E3Query, seria possível abrir a conexão com o BD por script, fazer a consulta e apresentar em um E3Browser? Testei algumas strings de conexão, mas apresentou alguns erros relacionados ao Oracle (qual seria a string apropriada para conectar em um oracle10g remoto por vbscript?)

Obrigado pela atenção.

EDIT:

Estranhamente agora estou conseguindo retornar registro nas consultas realizadas pelo E3Query, não modifiquei nada então não sei o que pode ter havido, talvez um limite de conexões simultâneas relacionado ao usuário que foi fornecido.
Porém no E3Browser o erro persiste. Observando o log do E3, aparece o seguinte:

(‘xxx.xxx.xxx.xxx/cgora2’) ErrorLocal = OpenAdoConnection() Error #0x80004005 Description:Error while trying to retrieve text for error ORA-01019
(Source: Microsoft OLE DB Provider for Oracle) (SQL State: (null)) (NativeError: 1019)

GetRowsetsConnection FAILED - error(80004005)

CreateRecordset FAILED - error(80004005)

Error in Rowset creation

Olá Marcel!

Qual é o código SQL da Consulta?

Por acaso você tem mais de uma versão do Oracle instalada nesse computador? Veja mais detalhes no link abaixo.

Não creio que o erro seja na consulta… é uma consulta simples apenas para testar o retorno de dados.
Na aplicação já existe um DBServer (conectando em um oracle 10g remoto), para armazenar os dados coletados pelo E3 na comunicação com os equipamentos. Criei outro DBServer para conectar em outro banco de dados (também oracle 10g remoto) que não tem relação nenhuma com os dados da aplicação atual, é um sistema de gerenciamento de manutenção da empresa, onde estão registrados as sol. e ordens de serviço da gerência de manutenção da empresa.

A intenção é integrar os dados de manutenção dentro do sistema supervisório. Para isto me foi concedido um acesso bem restrito de leitura apenas dos dados de BD (acesso apenas a sinônimos, sem acesso direto às tabelas).

Criei outro objeto DBServer para facilitar consulta e exibição dos dados através do E3Query e E3Browser (já consigo fazer consultas no BD através do Oracle SQL Developer). Configurei um E3Browser e criei uma consulta simples, ao testar a consultar na aba “Visualizar” do E3Query, obtenho os resultados que desejo, e incluse o E3Browser configura as colunas de acordo com o resultado. Porém ao abrir a tela onde coloquei o E3Browser aparece a mensagem de erro, e ao analisar o log observo as mensagens abaixo.

(‘xxx.xxx.xxx.xxx/cgora2’) ErrorLocal = OpenAdoConnection() Error #0x80004005 Description: (Source: OraOLEDB) (SQL State: (null)) (NativeError: 0)

GetRowsetsConnection FAILED - error(80004005)

CreateRecordset FAILED - error(80004005)

A mensagem de erro ORA-01019 sumiu pois verifiquei que além do Cliente oracle estava instalado o Servidor oracle (antigamente o BD do Elipse na nossa aplicação era local, agora é remoto). Neste caso desinstalei o servidor oracle e deixei o cliente. Como não deu certo vou tentar o contrário.

Olá Marcel!

Alguma novidade?

Sim. Consigo agora no E3Browser, apresentar os mesmos resultados que consigo através do E3Query.

Até aí tudo bem, porém ao alterar a consulta em tempo de execução (para realizar filtros no “where” da consulta sql), a consultar passa ok, porém o E3Browser fica apenas com a mensagem “carregando” e não apresenta os resultados, mas o mais esquisito é que isso só acontece se eu uso o método do browser “RetrieveE3QueryFields”.

Se não eu não forçar a a atualização dos fields do browser, a consulta apresenta os resultados corretamente, de acordo com a consulta alterada em tempo real.

Nos logs tanto do Elipse , tanto E3, db ou fulldb não aparece nada relacionado. Nesta aplicação estou usando a versão 4.6.162 do Elipse, não vi o changelog, mas sei que foi acrescentado algumas opções no E3Query (origem da consulta ser do Dbserver, Storage ou OPC), e estou analisando se não tem relação. Quanto às opções do E3Query já tentei todas opções de CursorLocation e CursorType e não fizeram diferença, quando uso o RetrieveE3QueryFields o E3Browser fica apenas “carregando”.

Vou testar em outra aplicação que usa a versão 3.5.352 para ver como se comporta, depois atualizo.

Obrigado pela atenção.

EDIT:
Copiei o projeto desta aplicação (Elipse v.4.6.) para outro servidor Elipse com versão 3.5. A consulta e a exibição do resultado no E3Browser funcionaram sem problemas, mesmo alterando a consulta em tempo de execução e utilizando o método RetrieveE3QueryFields, os resultados apareceram no browser sem nenhum problema.

Sei que isso não elimina algum problema no servidor, portanto amanhã realizarei o downgrade da versão do Elipse no servidor que está apresentando o problema, testarei novamente e atualizo aqui as informações.

Marcel,

Por que exatamente você está usando o método RetrieveE3QueryFields?

Pq usaria um único browser exibindo o resultado de diferentes consultas (de acordo com filtros escolhidos pelos usuários). Os resultados das consultas podem não ter os mesmos campos, logo os campos do browser também têm que ser dinâmicos assim com as consultas são.

Mas a verdadeira questão é por que o método RetrieveE3QueryFields está causando o E3Browser ficar “carregando” e nunca apresentar os dados, enquanto ao não utilizar este método o resultado é exibido? Isso testando-se na versão 4.6. e o mesmo projeto na versão 3.5 do Elipse não apresenta falha.

Para tirar a última dúvida se tem alguma relação com o servidor, vou fazer o dowgrade da versão do Elipse para uma que não tenha estas opções novas (DataSource: Dbserver, Storage e OPC) no E3Query.

Marcel,

Você pode enviar o log do E3 junto com a sua aplicação ou uma aplicação qualquer que reproduza o problema?

Marcel,

Como ficou este assunto?

Bom, sem utilizar o método RetrieveE3QueryFields não ocorre o erro do E3Browser de ficar apenas carregando sem mostrar os dados.
Porém acredito ter alguma relação com o fato do usuário que está conectado ao banco de dados não ter acesso direto às tabelas, apenas à sinônimos. Ao E3 parece que o usuário não possui acesso à nenhuma tabela, porém fazendo uma consulta personalizada pelo E3Query consigo retornar resultados.
Estranhamente, em outra aplicação do E3 (versão 3.5) onde fiz uma cópia do projeto, o método Retrieve não teve este comportamento, somente nas aplicações versão 4.5+.

Quanto ao log, não aparece nenhuma mensagem de erro, e a aplicação não é nada de mais, um E3Browser e uma consulta simples para teste. No mais, vou fazer sem usar o método mesmo. Obrigado pela atenção.