Introdução
Neste lab vamos criar um Database Link entre um banco de dados oracle e um banco de dados firebird.
O Heterogeneous Services (HS) é um componente integrado no banco de dados oracle que fornece acesso genérico a sistemas non-Oracle.
Para Acessar sistemas non-Oracle utilizando conectividade genérica (Ex. ODBC) é necessário configurar o agente Oracle Gateway. No lab vamos configurar o Oracle Gateway e Driver ODBC no mesmo servidor com SO Windows Server 2012.
Pré-requisitos
Oracle Database 11.2.0.4 ou superior.
Configurando Firebird
--Download: https://firebirdsql org/en/firebird-3-0/#Win64 --Criar Alias: C:\Arquivos de Programas\Firebird\Firebird_3_0\aliases conf --Inserir Linha: firebird = C:\firebirddb\firebird fb --Liberar Porta 3050 ou Desabilitar Firewall no Windows --Mudar Senha Padrão do SYSDBA CMD> gsec -user sysdba -password masterkey GSEC> modify sysdba -pw firebird --Criar Database CMD> C:\Program Files\Firebird\bin>isql -user SYSDBA -passsword firebird Use CONNECT or CREATE DATABASE to specify a database SQL>CREATE DATABASE 'C:\firebirddb\firebird fb'; -- Conectar com iSQL CMD> C:\Program Files\Firebird\bin>isql; --Utilize CONNECT ou CREATE DATABASE para especificar o database SQL>CONNECT "C:\firebirddb\firebird fb" user SYSDBA password firebird; --Neste ponto, o isql informará que você está conectado: DATABASE "C:\firebirddb\firebird fb", User: sysdba --Testando conexão: SQL> SELECT * FROM RDB$RELATIONS; --Criando Tabela: CREATE TABLE teste ( from_currency VARCHAR(10) NOT NULL, to_currency VARCHAR(10) NOT NULL, conv_rate FLOAT NOT NULL, update_date DATE, PRIMARY KEY (from_currency, to_currency) ); INSERT INTO teste VALUES ('Dollar', 'CdnDlr', 1 0027, '11/09/2012'); INSERT INTO teste VALUES ('Dollar', 'Yen', 79 2400, '11/09/2012'); INSERT INTO teste VALUES ('Dollar', 'SFranc', 0 9495, '11/09/2012'); INSERT INTO teste VALUES ('Dollar', 'Pound', 0 6272, '11/09/2012'); INSERT INTO teste VALUES ('Pound', 'Euro', 1 2542, '11/09/2012'); INSERT INTO teste VALUES ('Pound', 'Yen', 126 3320,'11/09/2012'); INSERT INTO teste VALUES ('Yen', 'Pound', 0 0079, '11/09/2012'); INSERT INTO teste VALUES ('CdnDlr', 'Dollar', 0 9973, '11/09/2012'); INSERT INTO teste VALUES ('CdnDlr', 'Euro', 0 7857, '11/09/2012'); INSERT INTO teste VALUES ('Euro', 'Dollar', 1 2716, '11/09/2012'); commit;
Configurando Driver ODBC no Windows
--Download ODBC Driver disponibilizado no site do Firebird https://sourceforge net/projects/firebird/files/firebird-ODBC-driver/2 0 5-Release/Firebird_ODBC_2 0 5 156_x64 exe/download --Configurar Client Firebird > Somente se o banco de dados firebird for em outra estação Download Firebird Installer: https://github com/FirebirdSQL/firebird/releases/download/R3_0_4/Firebird-3 0 4 33054_0_x64 exe --Selecionar somente Client Components (Abaixo)
--Configurar WINSQL para testar a conexão ODBC e realizar select na base Firebird --Download WinSQL Trial https://bit ly/2xJqWLW --Instalar e configurar nova conexão: Data Source Name: firebird
--Testar conexão e sql SQL> select * from teste;
Agora podemos configurar a Fonte de Dados ODBC no Windows
--Configurar ODBC Driver no Windows Abrir Administrador de Fonte de Dados ODBC (64 Bits) como ADMINSITRADOR Aba: DSN de Sistema Opção: Adicionar Opção: Firebird/InterBase(r) driver --### Firebird ODBC Setup ### Data Source: firebird Description: Database: localhost:C:\firebirddb\firebird fb Client: C:\Program Files\Firebird\Firebird_ODBC\fbclient dll Database Account: SYSDBA Password: *******
Configurar Oracle Gateway (Windows)
Recomendo configurar o Gateway em ambiente Windows.
--Download https://www oracle com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461 html --Instalar e configurar o Oracle Gateway + Listener (netca) --Configurar HS no gateway home: Caminho: C:\app\kelwin\product\11 2 0\gateway\hs\admin --Criar arquivo init<sid> ora initfirebird ora --Adicionar Linha: HS_FDS_CONNECT_INFO=firebird --Configurar tnsnames ora com o IP do banco de dados Firebird / SID do Driver ODBC (192 168 249 201) --Caminho: C:\app\kelwin\product\11 2 0\gateway\network\admin tnsnames ora --Adicionar Linhas: firebird= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192 168 249 201)(PORT = 1521)) (CONNECT_DATA = (SID = firebird)) (HS = OK) ) --Configurar listener ora com entrada fixa para o ODBC configurado (bancomuro) --Caminho: C:\app\kelwin\product\11 2 0\gateway\network\admin listener ora --Adicionar Linhas: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192 168 249 201)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = firebird) (ORACLE_HOME = C:\app\kelwin\product\11 2 0\gateway) (PROGRAM = dg4odbc) ) ) ADR_BASE_LISTENER = C:\app\kelwin\product\11 2 0\gateway --Abrir CMD como Administrador e subir listener CMD> lsnrctl start CMD> lsnrctl status CMD> services msc -- Verificar se o serviço está subindo automaticamente
Criar Database Link (DbLink) no Banco de Dados
Agora vamos configurar o DBLink no banco de dados Oracle (Neste caso o Banco de dados está no SO Oracle Linux 7)
--Caminho: /u01/app/oracle/11 2 0 4/db_1/network/admin $ cd /u01/app/oracle/11 2 0 4/db_1/network/admin --Arquivo: tnsnames ora $ vi tnsnames ora --Adicionar Entrada: firebird= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192 168 249 201)(PORT = 1521)) (CONNECT_DATA = (SID = firebird)) (HS = OK) ) --Criar Database Link Público SQL> create public database link DBLINK connect to SYSDBA identified by firebird using 'firebird'; --Entrada TNSNAMES --Testar Database Link SQL> select * from mon$database@DBLINK; SQL> select * from teste@DBLINK;