Eu tenho um aplicativo Java que usa JDBC (via JPA) que estava se conectando a um banco de dados de desenvolvimento usando nome do host, porta e SID do Oracle, assim:
jdbc: oracle: thin: @ oracle.hostserver1.mydomain.ca: 1521: XYZ
XYZ era o SID do Oracle. Agora, preciso conectar-me a um banco de dados Oracle diferente que não use um SID, mas use um "Nome do Serviço" do Oracle.
Eu tentei isso, mas não funciona:
jdbc: oracle: thin: @ oracle.hostserver2.mydomain.ca: 1522: ABCD
ABCD é o nome do serviço do outro banco de dados.
O que estou fazendo de errado?
fonte
jdbc:oracle:thin:USER/PWD@//my.ip.address:1521/SERVICENAME
oujdbc:oracle:thin:@//my.ip.address.1521/SERVICENAME
, com nome de usuário e senha como argumentos parajdbc.getConnection()
. Ainda intrigante.Portanto, existem duas maneiras fáceis de fazer isso funcionar. A solução publicada por Bert F funciona bem se você não precisar fornecer outras propriedades especiais de conexão específicas do Oracle. O formato para isso é:
No entanto, se você precisar fornecer outras propriedades de conexão específicas do Oracle, precisará usar o estilo TNSNAMES longo. Eu tive que fazer isso recentemente para habilitar conexões compartilhadas Oracle (onde o servidor faz seu próprio pool de conexões). O formato TNS é:
Se você está familiarizado com o formato de arquivo Oracle TNSNAMES, isso deve lhe parecer familiar. Caso contrário, basta pesquisar no Google para obter detalhes.
fonte
Você também pode especificar o nome do TNS na URL JDBC como abaixo
fonte
Tente o seguinte:
jdbc:oracle:thin:@oracle.hostserver2.mydomain.ca:1522/ABCD
Editar: por comentário abaixo, isso está realmente correto:
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
(observe o//
)Aqui está um link para um artigo útil
fonte
jdbc:oracle:thin:@//oracle.hostserver2.mydomain.ca:1522/ABCD
.oracle.hostserver2.mydomain.ca
?Essa discussão me ajudou a resolver o problema com o qual estava lutando há dias. Olhei em toda a Internet até encontrar a resposta de Jim Tough em 18 de maio de 11 às 15:17. Com essa resposta eu consegui me conectar. Agora, quero retribuir e ajudar os outros com um exemplo completo. Aqui vai:
fonte
Caso você esteja usando o eclipse para conectar o oracle sem SID. Existem dois drivers para selecionar, ou seja, Oracle thin driver e outro é outro driver. Selecione outros drivers e insira o nome do serviço na coluna do banco de dados. Agora você pode se conectar diretamente usando o nome do serviço sem o SID.
fonte
Ao usar em
dag
vez dethin
, a sintaxe abaixo, apontando para o nome do serviço, funcionou para mim. Asjdbc:thin
soluções acima não funcionaram.fonte
Isso deve estar funcionando:
jdbc:oracle:thin//hostname:Port/ServiceName=SERVICE_NAME
fonte