DBLINK DO ORACLE PARA MYSQL

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Pessoal,

Preciso fazer um dblink de um banco Oracle 11g para um banco mysql 5.1.

Pesquisei no pai do burros o google e achei varias coisas, mas não consigo ainda essa conexão.

Alguém já fez isso e poderia compartilhar.

Qualquer dica e bem vindo.

Abs..
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá Madmax !

Este link abaixo me parece bem confiável e descreve passo a passo a criação de um DBLINK apontando do ORACLE para o MYSQL:

http://lists.mysql.com/mysql/189287

Infelizmente eu não tive tempo de reproduzir estas instruções.

Se eu conseguir posteriormente, vou postar por aqui, ok?

Abraços,

Sergio Coutinho
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Madmax,

O link que te passei anteriormente parece explicar como criar um DBLINK do ORACLE para o SQL para o release ORACLE 10G.

No caso do 11G, o programa HSODBC do 10G foi substituido pelo DG4ODBC.

Basicamente, eu segui as recomendações do link anterior (no WINDOWS) com algumas alterações:

- Criação do DRIVE ODBC de nome MySQL5(crei uma conexão ODBC no Windows - o chamado DNS). Neste ODBC você informa o usuário e senha (ex: ROOT) e depois posiciona na base desejada (ex: SAKILA);
- Criei o arquivo initMySQL5.ora no subdiretório hs (apontando para o Driver MySQL5);
- Configurei o meu LISTENER.ORA para aceitar o programa dg4odbc.exe, informando o caminho completo:

Selecionar tudo

    (SID_DESC =
      (SID_NAME=MySQL5)
      (ORACLE_HOME = D:\oracle\product\xe11g\app\oracle\product\11.2.0\server)
      (PROGRAM=D:\oracle\product\xe11g\app\oracle\product\11.2.0\server\bin\dg4odbc.exe)
    )
- Configurei o TNSNAMES.ORA para mapear a base MYSQL:

Selecionar tudo

# Teste de DBLINK com o MYSQL Local
MySQL5.world =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
    (CONNECT_DATA=(SID=MySQL5))
    (HS=OK)
  )


- Executei o comando :

Selecionar tudo

ALTER SYSTEM SET GLOBAL_NAMES=false;
- Reiniciei o Listener do XE;

- FIz um teste de SELECT em uma das tabelas. ENTRETANTO, os campos data vieram com caracteres estranhos. É importante avaliar se algo mais precisa ser configurado p(ex: CHARSET) para permitir uma correta visaulização dfdos dados do MYSQL.

Encontrei informações adicionais neste link : https://forums.oracle.com/thread/2283007


Boa sorte e poste aqui a sua solução, se conseguir configurar com sucesso.

Abraços,

Sergio Coutinho
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Grande Sergio...

Consegui fazer o dblink do Oracle para o Mysql seguindo essas dicas sua Obrigado.

E vou deixar uma dica importante aqui para converter as data timestamp Mysql para o Oracle.

E bem simples e so fazer deste forma o select

Selecionar tudo

 select to_date('01-JAN-1970','dd-mon-yyyy')+(SUBSTR(COLUNA_MYSQL,1,10)/60/60/24) DATA_CRIACAO from TABELA_MYSQL@DBLINK
Agora uma explicação o porque fazer desta forma:

Tem que usar esse formato fixo '01-JAN-1970' porque o mysql timestamp foi criado no formato timestamp Unix que os número de segundos que se passaram desde 1 de janeiro de 1970 (meia-noite UTC / GMT), não contando os segundos bissextos (em ISO 8601: 1970-01-01T00: 00 : 00Z).

Espero que ajudem esse post.

Abs..
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes