Encontrar banco de dados

5 respostas
D

Olá, não tenho certeza se essa minha dúvida é para java avançado ou básico, como eu sou iniciante, isto parece um pouco avançado para mim.

Tenho uma aplicação java que se conecta ao banco de dados (até ai tudo bem), porém este banco de dados pode mudar de endereço constantemente (Hoje está no computador A e amanhã pode estar no computador B), tudo o que eu terei, será o nome do banco, usuário e senha.

Eu quero implementar um algoritmo que faz uma busca na rede local, encontra em qual computador o banco de dados esteja rodando e então conecta no mesmo.
Não sei como fazer, mas eu imagino que deveria “pingar” os computadores na LAN, verificar 1 por 1 qual está com o banco de dados ativo e então conectar, porém parece uma solução ruim e demorada.

Eu já li que o ORACLE tem o listener.ora, mas não sei como funciona, talvez se ele permitisse ser encontrado em rede resolveria meu problema.

PS: O banco de dados não me importa, desde solucione meu problema, aceito qualquer um.

Desde já agradeço a colaboração de vocês.

5 Respostas

P

Se o banco de dados pode mudar de endereço, porque não usa o Nome do Host contendo o Banco de Dados ao invés do IP na conexão?

Se ele mudar fisicamente, este não é o modo certo de se fazer espelhamento de banco de dados.

Abraço

D

philliparente:
Se o banco de dados pode mudar de endereço, porque não usa o Nome do Host contendo o Banco de Dados ao invés do IP na conexão?

Se ele mudar fisicamente, este não é o modo certo de se fazer espelhamento de banco de dados.

Abraço

Você diz fazer tipo assim:
SERVIDOR/BANCO… ao invés de IP/BANCO… ?
Putz! Realmente me falasse agora uma solução bem simples que eu não tinha pensado.
Vou estudar o meu caso e ver se consigo fazer desse jeito mesmo.

Se alguém tiver alguma outra sugestão, por favor, podem colaborar qualquer idéia é útil.

Obrigado philliparente!

FabricioPJ

Todo cliente que se conecta a um banco de dados Oracle possui um arquivo chamado “tnsnames.ora”. Esse arquivo cria uma espécie de alias que mapeia o banco de dados. Um exemplo do arquivo segue mais abaixo:

orateste = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) (CONNECT_DATA = (service_name = orateste)) )

O que você poderia fazer é, toda vez que o banco mudar de máquina, alterar de alguma forma as informações desse arquivo referentes a máquina onde o banco está (HOST no tnsnames.ora).

Opinião pessoal: Acho que essa sua estratégia está no mínimo estranha. Você poderia explicar melhor a finalidade disso tudo para que possamos sugerir, quem sabe, alguma melhoria nessa estratégia ou arquitetura.

D

Olá Fabrício, obrigado por sua contribuição.

Sei que está confuso, eu programo em C# e nunca passei por isso.
Acontece que isso é um projeto novo, vou dizer basicamente o que ele deve fazer (situação hipotética):

É um programa capaz de conectar em “diferentes” bancos de dados, todos os bancos são da minha empresa, porém cada 1 pode estar em um cliente diferente.
Digamos que instalei o sistema no note do cliente A, se este cliente ir no cliente B (que também tem o sistema), o cliente A vai poder se conectar no banco do cliente B.
Porém eu teria N clientes e não teria como saber o endereço do banco de cada um, mas a conexão só é permitida localmente, pela web é negada.

Eu sei que parece estranho, mas garanto que será algo interessante se funcionar como eu espero.

Eu pensei na possibilidade de colocar o banco num servidor tomcat e acessar como localhost, mas não sei como funciona o tomcat e nem se isso me ajudaria.

Você falou sobre alterar o tnsnames.ora cada vez que o banco mudar o endereço, pode ser, mas tem que ser automaticamente via software, ou seja, o software identifica que o banco não é o mesmo e procura pelo endereço correto.

Cara, obrigado mesmo por sua contribuição.
Abraço

P

Tudo bem, de nada…Tenta aplicar a conexão com o nome do host e post aí o resultado. Abraço cara!

Criado 4 de maio de 2012
Ultima resposta 6 de mai. de 2012
Respostas 5
Participantes 3