Instalando, Criando e Acesso a Extensão oracle_fdw

O oracle_fdw é uma extensão do PostgreSQL que utiliza o Foreing Data Wrapper (FDW), que é uma biblioteca que pode se comunicar com fontes de dados externas. Esta por sua vez, utiliza componentes do SQL MED que gerencia dados externos e é a parte do SQL que cuida da integração de dados armazenados em base de dados remotas.

O FDW utiliza em suas implementações, extensões em SGBD do PostgreSQL, e estas implementações em SGBD são responsáveis pela troca de informações entre a fonte de dados remota e o executor do PostgreSQL. O oracle_fdw nos auxilia no acesso à objetos remotos em bases de dados específicas.

A instalação da extensão do oracle_fdw é bem simples. Contudo, antes precisamos fazer a instalação de dois pacotes em seu servidor. O primeiro é o oracle-instantclient-basic (pacote básico) e o segundo é o oracle-instantclient-devel (pacote para desenvolvimento). Você pode encontrar os mesmos em: https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html.

Os pacotes Instant Client habilitam o desenvolvimento e implementação de bancos de dados Oracle. Vamos começar a instalação! Algumas considerações antes:

– Toda a instalação será feita usando o usuário root;
– Instale o pacote Alien. Este pacote permite que você converta e instale pacotes em arquivos de rpm.
# apt install alien

1 – Agora instale o pacote oracle-instantclient-basic (neste exemplo usaremos a versão 12.1.0.2.0-1.x86_64):
# alien instead -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

2 – Na sequência instale o pacote oracle-instantclient-devel (no meu caso na versão 12.1.0.2.0-1.x86_64):
# alien instead -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

3 – Depois da instalação destes dois pacotes, crie um arquivo chamado oracle_vars.sh utilizando:
# vi /etc/profile.d/oraclevars.sh

4 – Use o comando abaixo para o arquivo oraclevars.sh:
ORACLE_HOME=/usr/lib/oracle/12.1/client64/

5 – Feche o arquivo e atualize as variáveis configuradas (novamente utilizando o usuário root):
# source /etc/profile.d/oraclevars.sh

6 – Depois disso, crie o arquivo oraclelib.conf:
# vi /etc/ld.so.conf.d/oraclelib.con

7 – Use o comando abaixo para o arquivo:
# /usr/lib/oracle/12.1/client64/lib

8 – Feche o arquivo e atualize as bibliotecas dinâmicas:
# idconfig

9 – Verifique o hostname do servidor onde está instalado o PostgreSQL:
# hostname -s

10 – Verifique se o nome de hostname do servidor está associado ao IP local do servidor no arquivo /etc/hosts. Caso não esteja incluído no arquivo /etc/hosts utilizar: # vi /etc/hosts

Após incluir o nome resultante do comando hostname -s:
oraclevm-tdsfw

Agora que a instalação e configuração dos pacotes do Instant Client foram feitas, vamos para a criação do oracle_fdw (ainda utilizando o usuário root):

1 – Baixe o pacote mais atual do oracle_fdw:
# wget https://github.com/laurenz/oracle_fdw/archive/master.zip

2 – Descompacte este arquivo utilizando:
# unzip master

3 – Entre no diretório extraído:
# cd oracle_fdw-master

4 – Agora execute o comando make com a instrução USE_PGXS=1 para habilitar a extensão de módulos com o oracle_fdw:
/oracle_fdw-master# make USE_PGXS=1

5 – Caso o resultado do comando acima seja semelhante a imagem abaixo:

Execute o comando make install também com a instrução USE_PGXS=1 para habilitar a extensão de módulos como o tds fdw:
/oracle_fdw-master# make USE_PGXS=1 install
A Instalação foi Concluída!

Agora para criar a extensão, você pode utilizar o pgAdmin apenas criando uma conexão com o banco de dados onde está o PostgreSQL, habilitando os seguintes objetos: Foreign Data Wrappers, Foreign Servers e Foreign Tables. Em seguida crie a extensão utilizando o editor de query com instrução em SQL:

CREATE EXTENSION oracle_fdw;

Você também pode utilizar painel de controle do PostgreSQL em psql, conectando com o banco utilizando:

$psql -U postgres

.. e criando a extensão tds_fdw utilizando instrução em SQL:

CREATE EXTENSION oracle_fdw

Para que você consiga acessar o servidor do Oracle, do seu servidor do PostgreSQL é preciso criar um servidor estrangeiro, o mapeamento de usuário e uma tabela estrangeira ou várias tabelas se você quiser consultar em mais de uma.

1 – Criação do servidor estrangeiro:
CREATE SERVER nome_servidor_oracle FOREIGN DATA WRAPPER oracle_fdw
        OPTIONS (dbserver ‘//ip_servidor_oracle/instancia_oracle’)

2 – Criação do mapeamento de usuário:
CREATE USER MAPPING FOR postgres SERVER nome_servidor_oracle
       OPTIONS (user ‘usuario_oracle’, password ‘senha_usuario_oracle’);

3 – Criação da tabela estrangeira:
CREATE FOREIGN TABLE nome_tabela_no_oracle (
NOME_COLUNA_NO_ORACLE character NULL,
NOME_COLUNA_NO_ORACLE character NULL,
NOME_COLUNA_NO_ORACLE character NULL
) SERVER nome_servidor_oracle
OPTIONS (table ‘(SELECT * FROM TABELA_NO_ORACLE)’);

Estes comandos podem ser realizados no painel de controle do PostgreSQL em psql e no editor query do pgAdmin.

Para saber se funcionou corretamente, faça uma consulta no servidor estrangeiro do oracle utilizando:
SELECT * FROM public. nome_tabela_no_oracle;

Se a consulta retornar o conteúdo que está nas tabelas do Oracle, então seu oracle_fdw funcionou e retorna os dados para o PostgreSQL.

Gostou do tutorial? Ficou com dúvidas? Entre em contato com conosco. Nossa equipe de DBAs terá prazer em atendê-los!

Referências:
https://pgxn.org/dist/oracle_fdw/
https://github.com/laurenz/oracle_fdw
https://www.oracle.com/technetwork/database/features/oci/instant-client-wp-131479.pdf
http://blog.preciseipostei.com.br/index.php/2018/01/21/i

 

Por Marcelo Augusto da Silva

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Artigos Recentes

Backup SQL RDS para Amazon S3

Fale Conosco

Converse com nossos especialistas e descubra como transformar seus dados em informações seguras, disponíveis e acessíveis.

Endereço

Rua Angelo Antonello, 93 – Sala 62, Centro – Farroupilha/RS – CEP: 95170-492

Contato Comercial

Email: [email protected]
Telefone: (54) 3401-1471

Abrir bate-papo
Olá
Podemos ajudar?