go here Vou explicar neste artigo um pouco de redes heterogeneas em outros databases e o Oracle.
No caso irei abordar um acesso do Oracle 10g (10.2.0.5) Linux x86 para o MySQL 5.1.46 Server em Windows XP 32b.
A partir do Oracle acessar tabelas e views que estão dentro do MySQL.
https://www.fandangotrading.com/nqc1p5o5i Dados dos ambientes para melhor compreenção:
Oracle:
Oracle Database 10g Release 10.2.0.5.0 – Production
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
IP: 192.168.10.70
SERVER: dbmaster.local
ORACLE_HOME=/ora01/app/oracle/product/10.2.0
https://technocretetrading.com/9p1jrmek66o MySQL:
Server version: 5.1.46-community MySQL Community Server (GPL)
Microsoft Windows XP Professional
5.1.2600 Service Pack 3 compilação 2600
IP: 192.168.10.184
SERVER: TKVM
https://marcosgerente.com.br/sleum00m6 Primeiramente vamos criar o ambiente do mysql os privilegios e estrutura dos dados no meu mysql:
https://www.drcarolineedwards.com/2024/09/18/3hgnu8q13b mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | netjukebox | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> create database db_rafael; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db_rafael | | mysql | | netjukebox | | test | +--------------------+ 5 rows in set (0.00 sec) mysql> create table tabela02 (campo1 int(11) not null auto_increment, campo2 char(255), primary key (campo1)); Query OK, 0 rows affected (0.03 sec) mysql> insert into tabela02 (campo2) values ('RAFAEL STOEVER'); Query OK, 1 row affected (0.01 sec) mysql> insert into tabela02 (campo2) values ('JOSE GALDERIO'); Query OK, 1 row affected (0.00 sec) mysql> insert into tabela02 (campo2) values ('MARIA DAS GRACAS'); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.00 sec) mysql> select * from tabela02 -> ; +--------+------------------+ | campo1 | campo2 | +--------+------------------+ | 1 | RAFAEL STOEVER | | 2 | JOSE GALDERIO | | 3 | MARIA DAS GRACAS | +--------+------------------+ 3 rows in set (0.00 sec)
https://luisfernandocastro.com/lb3ro179kf Criarei um usuario para acesso a base remotamente do mysql:
https://www.thoughtleaderlife.com/nlysb8p18 mysql> create user 'rafael'@'localhost' identified by 'minha_senha'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on db_rafael.* to 'rafael'@'192.168.10.70' identified by 'senha'; Query OK, 0 rows affected (0.00 sec)
https://www.modulocapital.com.br/tjg78bb Verificado o conteudo do mysql vamos fazer o acesso do Oracle ao MySQL Server.
source link No servidor Linux do Oracle:
click here Para acessar o MySQL precisamos primeiramente um acesso ao database pelo linux, no caso iremos usar o connector/ODBC que pode ser encontrador no link
Connector/ODBC : http://download.softagency.net/mysql/Downloads/Connector-ODBC/3.51
No caso, estou baixando o mysql-connector-odbc-3.51.28-0.i386.rpm
Order Diazepam Online Ao baixar o arquivo vou instalar como root:
https://ragadamed.com.br/2024/09/18/6ikr4b7frm [root@dbmaster mysql]# rpm -Uvh mysql-connector-odbc-3.51.28-0.i386.rpm error: Failed dependencies: libltdl.so.3 is needed by mysql-connector-odbc-3.51.28-0.i386
https://livingpraying.com/yltjpqcy1 Como estou usando o Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Terei que colocar o CDROM de instalação e instalar o pacote dependente, no caso o libtool-ltdl
https://www.modulocapital.com.br/f94k4wuk [root@dbmaster mysql]# rpm -ivh /mnt/cdrom/Server/libtool-ltdl-1.5.22-7.el5_4.i386.rpm warning: /mnt/cdrom/Server/libtool-ltdl-1.5.22-7.el5_4.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159 Preparing... ########################################### [100%] 1:libtool-ltdl ########################################### [100%] [root@dbmaster mysql]# rpm -ivh mysql-connector-odbc-3.51.28-0.i386.rpm Preparing... ########################################### [100%] 1:mysql-connector-odbc ########################################### [100%] [myodbc3i.c][594][INFO] Driver registered. Usage count is 1. Location "/etc"
https://www.parolacce.org/2024/09/18/hmluuidefe Agora é configurar os arquivos do ODBC para acessar ao MySQL via linux:
source O arquivo odbcinst.ini deve conter os dados dos Drivers, no meu caso não precisei alterar nada:
source url [root@dbmaster mysql]# cat /etc/odbcinst.ini [PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/libodbcpsql.so Setup = /usr/lib/libodbcpsqlS.so FileUsage = 1 [MySQL ODBC 3.51 Driver] DRIVER = /usr/lib/libmyodbc3.so UsageCount = 1
https://www.thephysicaltherapyadvisor.com/2024/09/18/1m8s0liozt Verificando a entrada do driver [MySQL ODBC 3.51 Driver] agora vamos configurar o ODBC para acesso a minha base mysql:
https://www.fandangotrading.com/dowocan1ph3 [root@dbmaster mysql]# cat /etc/odbc.ini [mysqloracle] Driver = MySQL ODBC 3.51 Driver DATABASE = db_rafael PWD = senha PORT = 3306 SERVER = 192.168.10.184 UID = rafael SOCKET = /tmp/oracle/mysql.sock
https://boxfanexpo.com/rbf94q3 Desta forma criamos um nome para o acesso chamado mysqloracle, utilizando o drive MySQL ODBC 3.51 Driver, no database db_rafael e outros dados são para acesso como usuario, senha, ip e porta.
https://marcosgerente.com.br/cm47bovf3b Feito isso podemos testar:
https://luisfernandocastro.com/7yypl4q9 [root@dbmaster mysql]# isql mysqloracle -v
see +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> SQL> show tables; +-----------------------------------------------------------------+ | Tables_in_db_rafael | +-----------------------------------------------------------------+ | tabela01 | | tabela02 | +-----------------------------------------------------------------+ SQLRowCount returns 1 1 rows fetched SQL> select * from tabela02; +-----------+------------------- | campo1 | name +-----------+------------------- | 1 | RAFAEL STOEVER | 2 | MARIA JOSEFINA | 3 | JOSE GALDERIO +-----------+------------------- SQLRowCount returns 3 3 rows fetched
https://traffordhistory.org/lookingback/jji3h4ovej Observação importante é sobre o firewall do windows XP, ele estava habilitado e não estava liberando a porta 3306, tive que desabilitar o firewall padrão do windows para conseguir o acesso. Em muitos ambientes solicite ao seu administrador de REDES/Segurança para fazer a liberação correta da porta.
source url Testado com sucesso o acesso ao MySQL via ODBC connector agora vamos configurar o acesso do Oracle ao MySQL:
https://semnul.com/creative-mathematics/?p=a4cirblt0bv Como criamos um ODBC chamado mysqloracle vamos criar a entrada do acesso heterogeneo como mysqloracle para facilitar a manutenção posterior nesse acesso:
go to site Deve então ser criado um init em $ORACLE_HOME/hs/admin/initmysqloracle.ora contendo as seguintes configurações, no meu caso somente alterei o caminho do ODBCINI que o meu ficará em /etc/odbc.ini
follow site [oracle@dbmaster admin]$ cat $ORACLE_HOME/hs/admin/initmysqloracle.ora HS_FDS_CONNECT_INFO = mysqloracle HS_FDS_TRACE_LEVEL = 4 HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so set ODBCINI=/etc/odbc.ini
E teremos que adicionar ao listener a entrada para esse novo init fazendo acesso ao ODBC
(SID_DESC = (PROGRAM = hsodbc) (ORACLE_HOME = /ora01/app/oracle/product/10.2.0) (SID_NAME = mysqloracle) (ENVS = LD_LIBRARY_PATH=/usr/lib:/ora01/app/oracle/product/10.2.0/lib:/lib:/usr/lib) )
Desta forma o meu listener.ora ficou assim:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.70)(PORT = 1521)) ) ) ) SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=dbmaster) (ORACLE_HOME=/ora01/app/oracle/product/10.2.0) (SID_NAME=dbmaster) ) (SID_DESC = (PROGRAM = hsodbc) (ORACLE_HOME = /ora01/app/oracle/product/10.2.0) (SID_NAME = mysqloracle) (ENVS = LD_LIBRARY_PATH=/usr/lib:/ora01/app/oracle/product/10.2.0/lib:/lib:/usr/lib) ) )
Adicionado o item devemos fazer um reload no listener para aplicar as alterações efetuadas:
[oracle@dbmaster admin]$ lsnrctl reload LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 13-OCT-2011 12:07:54 Copyright (c) 1991, 2010, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.70)(PORT=1521))) The command completed successfully [oracle@dbmaster admin]$ lsnrctl status LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 13-OCT-2011 12:07:59 Copyright (c) 1991, 2010, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbmaster)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production Start Date 13-OCT-2011 11:26:34 Uptime 0 days 0 hr. 41 min. 25 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /ora01/app/oracle/product/10.2.0/network/admin/listener.ora Listener Log File /ora01/app/oracle/product/10.2.0/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.70)(PORT=1521))) Services Summary... Service "dbmaster" has 2 instance(s). Instance "dbmaster", status UNKNOWN, has 1 handler(s) for this service... Instance "dbmaster", status READY, has 1 handler(s) for this service... Service "dbmaster_XPT" has 1 instance(s). Instance "dbmaster", status READY, has 1 handler(s) for this service... Service "mysqloracle" has 1 instance(s). Instance "mysqloracle", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
Pode notar que há agora um serviço chamado mysqloracle no listener que irá fazer o acesso ao ODBC.
Caso o listener fique travado ou não consiga iniciar revise as configurações anteriores que há algum item errado.
Agora vamos fazer o acesso do Oracle ao MySQL :
Primeiramente temos que criar um ponto de acesso ORACLE, vamos adicionar ao TNSNAMES.ORA a entrada para o mysql que criamos:
MYSQL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.70)(PORT = 1521)) ) (CONNECT_DATA = (SID = mysqloracle)) (HS = OK) )
Agora dentro do Oracle vamos criar o dblink entre os bancos:
SQL> create public database link mysqlrafael connect to "rafael" identified by "senha" using 'MYSQL'; Database link created.
E para verificar esse acesso com sucesso, select basico em uma das tabelas;
SQL> desc tabela02@mysqlrafael; Name Null? Type ----------------------------------------- -------- ---------------------------- campo1 NUMBER(10) campo2 CHAR(255) campo1 campo2 ---------- ------------------------------ 1 RAFAEL STOEVER 2 JOSE GALDERIO 3 MARIA DAS GRACAS
FIQUE LIGADO !
Lembrando que tudo que usares no MySQL em caixa baixa “minusculo”, no Oracle deverá ser tratado como string em minusculo contendo as aspas.
Como no database link criado que o usuario é “rafael” e a senha é “senha”. Isso também vale para os campos e tabelas do mysql!
Para o Oracle 11g deve ser usado o (PROGRAM = dg4odbc)
E para 10g 64bits não há suporte hsodbc conforme feito neste artigo, desta forma deve ser comprado o Oracle Gateway para conseguir efetuar o procedimento.
Fonte: DESUPPORTED: How to Setup Generic Connectivity – HSODBC – to MySQL (Doc ID 260981.1)
Autor: Rafael Stoever
here Bacharel em Sistema de Informação pela Uniasselvi, atualmente cursando Gerenciamento de Projetos em TI pela Pós Graduação Uniasselvi. Atuo como Analista de suporte https://livingpraying.com/9400m5r3i a banco de dados – DBA pela Lumina Serviços em TI residente de Blumenau/ SC, https://vbmotorworld.com/cd9te0a7n6 OPN Certified Specialist, Certificado OCP 10g/11g/12c, OCE RAC10g e Linux 10g. Conhecimentos em Microsoft SqlSever, Mysql e programação web (php,asp).