Vou supor que você esteja usando o arquivo tnsnames.ora para especificar seus serviços de banco de dados disponíveis. Nesse caso, os erros de conexão geralmente se resumem a duas coisas.
-
O aplicativo não pode localizar a entrada TNS que você especificou na cadeia de conexão.
-
A entrada TNS foi encontrada, mas o IP ou host não está correto no arquivo tnsnames.ora.
Para expandir o número 1 (que eu acho que é o seu problema). Quando você diz ao Oracle para se conectar usando algo como:
sqlplus user/[email protected]
O serviço é definido no arquivo tnsnames.ora. Se eu tentar me conectar com um serviço que não está definido no meu tnsnames.ora, recebo o erro que você recebe:
[[email protected] ~]$ sqlplus sodonnel/[email protected]
SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 31 21:42:15 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Então você precisa verificar algumas coisas:
- Existe um arquivo tnsnames.ora - acho que sim porque seu console pode se conectar
- Existe uma entrada no arquivo para o serviço - acho que sim, pois o console se conecta
- O aplicativo pode encontrar o tnsnames.ora?
Seu problema pode ser o número 3 - o aplicativo é executado como um usuário diferente de quando você executa o console?
O Oracle procura o arquivo tnsnames.ora no diretório definido na variável de ambiente TNS_ADMIN - Se você estiver executando como usuários diferentes, talvez a variável de ambiente TNS_ADMIN não esteja definida e, portanto, não consiga encontrar o arquivo?