Configurar links entre o Oracle Database e o Aurora compatível com PostgreSQL - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar links entre o Oracle Database e o Aurora compatível com PostgreSQL

Criado por Jeevan Shetty (AWS), Bhanu Ganesh Gudivada (AWS), Sushant Deshmukh (AWS), Uttiya Gupta (AWS) e Vikas Gupta (AWS)

Ambiente: PoC ou piloto

Origem: banco de dados Oracle

Destino: Aurora compatível com PostgreSQL

Tipo R: redefinir a plataforma

Workload: Oracle; código aberto

Tecnologias: migração; bancos de dados

Serviços da AWS: Amazon Aurora; Amazon EC2 Auto Scaling; Amazon Route 53

Como parte da migração para a nuvem da Amazon Web Services (AWS), você poderá modernizar seus aplicativos para usar bancos de dados nativos de nuvem. A migração do banco de dados Oracle para o Amazon Aurora Edição Compatível com PostgreSQL é um desses passos em direção à modernização. Como parte dessa migração, os links nativos do banco de dados da Oracle também exigem conversão. 

Usando um link de banco de dados, o banco de dados poderá acessar objetos em outro banco de dados. Após a migração do banco de dados Oracle para o Aurora compatível com PostgreSQL, os links do banco de dados do servidor do banco de dados Oracle para outros servidores do banco de dados Oracle deverão ser convertidos em links do banco de dados do PostgreSQL para o Oracle. 

Esse padrão mostra como você poderá configurar links de banco de dados de um servidor de banco de dados Oracle para o banco de dados Aurora compatível com PostgreSQL. Como os links de banco de dados são unidirecionais, o padrão também abrange a conversão de links de banco de dados do banco de dados PostgreSQL para o banco de dados da Oracle.

Após a migração e a conversão do banco de dados da Oracle para um banco de dados Aurora compatível com PostgreSQL, as etapas a seguir são necessárias para configurar os links de banco de dados entre bancos de dados:

  • Para configurar um link de banco de dados com o Oracle Database como origem e o Aurora compatível com PostgreSQL como destino, os Oracle Database Gateways deverão ser configurados para comunicação entre bancos de dados heterogêneos.

  • Se você estiver configurando um link de banco de dados entre a versão 12.6 e anterior do Aurora compatível com PostgreSQL como banco de dados de origem e o banco de dados Oracle como destino, a extensão oracle_fdw não estará disponível nativamente. Em vez disso, você poderá usar a extensão postgres_fdw no banco de dados Aurora compatível com PostgreSQL e configurar oracle_fdw em um banco de dados PostgreSQL criado no Amazon Elastic Compute Cloud (Amazon EC2). Esse banco de dados atua como intermediário entre o banco de dados Aurora compatível com PostgreSQL e o banco de dados da Oracle. Esse padrão inclui duas opções para configurar o link do banco de dados com o Aurora PostgreSQL 12.6 e versões anteriores:

    • Configure a instância do EC2 em um grupo do Amazon EC2 Auto Scaling com um script de inicialização do Amazon EC2 que atualiza uma entrada interna do Sistema de Nomes de Domínio (DNS) no Amazon Route 53.

    • Configure a instância do EC2 em um grupo do Amazon EC2 Auto Scaling, com um Network Load Balancer para alta disponibilidade (HA).

Se você estiver configurando um link de banco de dados entre o Aurora compatível com PostgreSQL versão 12.7 e posterior, você poderá usar a extensão oracle_fdw.

Pré-requisitos

  • Banco de dados Amazon Aurora compatível com PostgreSQL em uma nuvem privada virtual (VPC)

  • Conectividade de rede entre os bancos de dados compatíveis com Oracle e Aurora PostgreSQL

Limitações

  • Atualmente, os links de banco de dados não podem ser configurados com o Amazon Relational Database Service (Amazon RDS) para Oracle como banco de dados de origem e o Aurora compatível com PostgreSQL como banco de dados de destino.

Versões do produto

  • Banco de dados da Oracle versão 11g e posterior

  • Aurora (compatível com PostgreSQL versão 11 e posterior)

Pilha de tecnologia de origem

Antes da migração, o banco de dados Oracle de origem poderá acessar objetos em outros bancos de dados Oracle usando links de banco de dados. Isso funciona de forma nativa entre bancos de dados Oracle no on-premises ou na nuvem AWS.

Pilha de tecnologias de destino

Opção 1

  • Amazon Aurora Edição Compatível com PostgreSQL

  • Banco de dados PostgreSQL em uma instância do Amazon EC2

  • Grupo do Amazon EC2 Auto Scaling

  • Amazon Route 53

  • Amazon Simple Notification Service (Amazon SNS)

  • AWS Identity and Access Management (IAM)

  • AWS Direct Connect

Opção 2

  • Amazon Aurora Edição Compatível com PostgreSQL

  • Banco de dados PostgreSQL em uma instância do Amazon EC2

  • Grupo do Amazon EC2 Auto Scaling

  • Network Load Balancer

  • Amazon SNS

  • Conexão direta

Opção 3

  • Amazon Aurora Edição Compatível com PostgreSQL

  • Conexão direta

Arquitetura de destino

Opção 1

O diagrama a seguir mostra a configuração do link do banco de dados usando as extensões oracle_fdw e postgres_fdw, com HA fornecido por um grupo do Amazon EC2 Auto Scaling e pelo Route 53.

Processo de sete etapas com o Direct Connect conectando o datacenter corporativo e a nuvem da AWS.
  1. Uma instância do Aurora compatível com PostgreSQL com a extensão postgres_fdw se conecta ao banco de dados PostgreSQL no Amazon EC2.

  2. O banco de dados PostgreSQL com a extensão oracle_fdw está em um grupo do Auto Scaling.

  3. O banco de dados PostgreSQL no Amazon EC2 usa o Direct Connect para se conectar ao banco de dados Oracle no on-premises.

  4. O Oracle Database é configurado com o Oracle Database Gateways para conexões do Oracle Database com o banco de dados PostgreSQL na AWS.

  5. O IAM concede permissão ao Amazon EC2 para atualizar os registros do Route 53.

  6. O Amazon SNS envia alertas para ações automáticas de escalabilidade.

  7. O nome de domínio configurado no Route 53 aponta para o endereço IP da instância Amazon EC2 do PostgreSQL.

Opção 2

O diagrama a seguir mostra a configuração do link de banco de dados usando as extensões oracle_fdw e postgres_fdw, com HA fornecido por um grupo do Auto Scaling e um Network Load Balancer.

Processo de seis etapas que inclui um Network Load Balancer.
  1. Uma instância do Aurora compatível com PostgreSQL com a extensão postgres_fdw se conecta ao Network Load Balancer.

  2. O Network Load Balancer distribui a conexão do banco de dados Aurora compatível com PostgreSQL para o banco de dados PostgreSQL no Amazon EC2.

  3. O banco de dados PostgreSQL com a extensão oracle_fdw está em um grupo do Auto Scaling.

  4. O banco de dados PostgreSQL no Amazon EC2 usa o Direct Connect para se conectar ao banco de dados Oracle no on-premises.

  5. O Oracle Database é configurado com o Oracle Database Gateways para conexões do Oracle Database com o banco de dados PostgreSQL na AWS.

  6. O Amazon SNS envia alertas para ações automáticas de escalabilidade.

Opção 3

O diagrama a seguir mostra a configuração do link do banco de dados usando a extensão oracle_fdw em um banco de dados Aurora compatível com PostgreSQL.

Processo leve de duas etapas que usa a extensão oracle_fwd.
  1. Uma instância do Aurora compatível com PostgreSQL com a extensão oracle_fdw usa o Direct Connect para se conectar ao Oracle Database.

  2. Os Oracle Database Gateways configurados no Oracle Server permitem a conectividade por meio do Direct Connect ao banco de dados Aurora compatível com PostgreSQL.

Serviços da AWS

  • O Amazon Aurora Edição Compatível com PostgreSQL é um mecanismo de banco de dados relacional totalmente gerenciado e em conformidade com ACID que ajuda você a configurar, operar e escalar implantações do PostgreSQL.

  • O AWS Direct Connect vincula a rede interna a um local do Direct Connect por meio de um cabo de fibra ótica Ethernet padrão. Com essa conexão, você pode criar interfaces virtuais diretamente para serviços públicos da AWS, ignorando provedores de serviço da internet no caminho da sua rede.

  • O Amazon Elastic Compute Cloud (Amazon EC2) oferece capacidade computacional escalável na Nuvem AWS. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente. Nesse padrão, as opções 1 e 2 usam uma instância do EC2 para hospedar um banco de dados PostgreSQL.

  • O Amazon EC2 Auto Scaling ajuda a manter a disponibilidade do aplicativo e permite adicionar ou remover instâncias do Amazon EC2 automaticamente de acordo com as condições definidas por você.

  • O AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS, controlando quem está autenticado e autorizado a usá-los.

  • O Amazon Route 53 é um serviço web de DNS altamente disponível e escalável.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O Elastic Load Balancing (ELB) distribui o tráfego de entrada de aplicativos ou de rede em vários destinos. Por exemplo, é possível distribuir o tráfego entre instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud (Amazon EC2) em uma ou mais Zonas de disponibilidade. Esse padrão usa um Network Load Balancer.

Outros serviços

TarefaDescriçãoHabilidades necessárias

Crie uma instância do EC2 e configure a extensão PostgreSQL oracle_fdw.

  1. Crie uma instância do EC2 com o sistema operacional Amazon Linux 2.

  2. Para instalar o PostgreSQL, faça login na instância do EC2 como ec2-user e execute os comandos a seguir.

    sudo su - root sudo tee /etc/yum.repos.d/pgdg.repo<<EOF [pgdg12] name=PostgreSQL 12 for RHEL/CentOS 7 - x86_64 baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64 enabled=1 gpgcheck=0 EOF sudo yum install -y postgresql12-server sudo yum install postgresql12-devel sudo /usr/pgsql-12/bin/postgresql-12-setup initdb sudo systemctl enable postgresql-12 sudo systemctl start postgresql-12
  3. Baixe o oracle_fdw código-fonte em GitHub.

    mkdir -p /var/lib/pgsql/oracle_fdw/ cd /var/lib/pgsql/oracle_fdw/ wget https://github.com/laurenz/oracle_fdw/archive/refs/heads/master.zip unzip master.zip
  4. Instale o Oracle Instant Client e configure as variáveis de ambiente Oracle.

    yum install https://download.oracle.com/otn_software/linux/instantclient/1912000/oracle-instantclient19.12-basic-19.12.0.0.0-1.x86_64.rpm
    yum install https://download.oracle.com/otn_software/linux/instantclient/1912000/oracle-instantclient19.12-devel-19.12.0.0.0-1.x86_64.rpm
    export ORACLE_HOME=/usr/lib/oracle/19.12/client64export LD_LIBRARY_PATH=/usr/lib/oracle/19.12/client64/lib:$LD_LIBRARY_PATH
  5. Certifique-se de verificar se pg_config corresponde à versão correta.

    which pg_config
  6. Compilar oracle_fdw.

    cd /var/lib/pgsql/oracle_fdw/oracle_fdw-master make make install

    Observação: se você receber um erro informando que oci.h está faltando, adicione o seguinte em Makefile:

    • Para PG_CPPFLAGS, adicionar -I/usr/include/oracle/19.12/client64

    • Para SHLIB_LINK, adicionar -L/usr/lib/oracle/19.12/client64/lib

    Para obter mais informações, consulte o repositório do oracle_fdw.

  7. Faça login no banco de dados PostgreSQL e crie a extensão oracle_fdw.

    sudo su - postgres psql postgres create extension oracle_fdw;
  8. Crie um usuário do PostgreSQL que será o proprietário das tabelas externas.

    CREATE USER pguser WITH PASSWORD '<password>'; GRANT CONNECT ON DATABASE postgres TO pguser;
  9. Crie o wrapper externo de dados. Substitua os seguintes valores pelos detalhes do seu servidor de banco de dados Oracle:

    • <Oracle DB Server IP>

    • <Oracle DB Port>

    • <Oracle_SID>

    create server oradb foreign data wrapper oracle_fdw options (dbserver '//<Oracle DB Server IP>:<Oracle DB Port>/<Oracle_SID>'); GRANT USAGE ON FOREIGN SERVER oradb TO pguser;
  10. Para criar o mapeamento do usuário e uma tabela externa que mapeia para a tabela Oracle, conecte-se ao banco de dados PostgreSQL como pguser e execute o comando a seguir. Observe que, no código de exemplo, DMS_SAMPLE é usado como o esquema Oracle que contém a NAME_DATA tabela e dms_sample é sua senha. Substitua-os conforme for necessário.

    create user mapping for pguser server oradb options (user 'DMS_SAMPLE', password 'dms_sample');

    Observação: o exemplo a seguir cria uma tabela externa no PostgreSQL para uma tabela no Oracle Database. Uma tabela externa semelhante deverá ser criada para cada tabela Oracle que requer acesso da instância do PostgreSQL.

    CREATE FOREIGN TABLE name_data(         name_type CHARACTER VARYING(15) NOT NULL,         name CHARACTER VARYING(45) NOT NULL     ) SERVER oradb OPTIONS (schema 'DMS_SAMPLE', table 'NAME_DATA'); select count(*) from name_data;
  11. Configure o banco de dados PostgreSQL na instância do EC2 para que ele possa localizar as bibliotecas Oracle durante a inicialização do banco de dados PostgreSQL. Isso é exigido pela extensão oracle_fdw.

    sudo systemctl stop postgresql-12

    Observação: Edite o arquivo /usr/lib/systemd/system/postgresql-12.service para incluir as variáveis de ambiente para que a inicialização systemctl encontre as bibliotecas Oracle exigidas pelo oracle_fdw.

    # Oracle Environment Variables Environment=ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1 Environment=LD_LIBRARY_PATH=/u01/app/oracle/product/12.2.0.1/db_1/lib:/lib:/usr/lib sudo systemctl start postgresql-12
Administrador de nuvem, DBA
TarefaDescriçãoHabilidades necessárias

Configure uma zona hospedada privada no Amazon Route 53.

  1. Crie uma zona hospedada privada do Amazon Route 53 Anote o nome de domínio, que será associado a uma instância do EC2.

  2. Adicione um registro “A” usando uma política de roteamento simples que resolva para o endereço IP da instância do EC2, contendo a extensão oracle_fdw PostgreSQL.

  3. Depois de salvar o registro “A”, anote o ID da zona hospedada do nome de domínio na etapa 1. Isso será usado para criar a política do IAM adequada.

DBA, administrador de nuvem

Crie um perfil do IAM que será anexada a uma instância do EC2.

Para criar um perfil do IAM que será anexado à instância do EC2, use a política a seguir. Substitua <Hosted zone ID> por informações capturadas na história anterior.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/<Hosted zone ID>" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "route53:ListHostedZones", "Resource": "*" } ] }
Administrador de nuvem, DBA

Crie um modelo de execução do EC2.

  1. Crie uma AMI da instância do EC2 que contém a extensão oracle_fdw PostgreSQL.

  2. Use o AMI para criar um modelo de execução EC2 .

  3. Para permitir a conexão da instância do Aurora compatível com PostgreSQL ao banco de dados PostgreSQL na instância do EC2, associe o perfil do IAM que você criou anteriormente e anexe grupos de segurança.

  4. Na seção Dados do usuário, adicione os seguintes comandos, alterando Hosted zone ID e Domain Name aos valores adequados. Em seguida, escolha Criar modelo de execução.

    #!/bin/bash v_zone_id='Hosted zone ID' v_domain_name='Domain Name' v_local_ipv4=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4) aws route53 change-resource-record-sets --hosted-zone-id $v_zone_id --change-batch '{"Changes":[{"Action":"UPSERT","ResourceRecordSet":{"Name":"'$v_domain_name'","Type":"A","TTL":10,"ResourceRecords":[{"Value":"'$v_local_ipv4'"}]}}]}'
Administrador de nuvem, DBA

Configure o grupo do Auto Scaling.

  1. Para configurar um grupo do Auto Scaling, use o modelo de lançamento que você criou na etapa anterior.

  2. Configure a VPC e as sub-redes adequadas que serão usadas para iniciar a instância do EC2. A configuração da opção 1 não usa o balanceador de carga.

  3. Defina a capacidade desejada, mínima e máxima como 1 em Políticas de escalabilidade.

  4. Para enviar alertas para a equipe de operações, adicione notificações para eventos como Inicialização ou Encerramento.

  5. Revise a configuração e escolha Criar grupo do Auto Scaling.

Ao concluir, o grupo do Auto Scaling inicia a instância do EC2 contendo a extensão PostgreSQL oracle_fdw, que se conecta ao Oracle Database.

Observação: Quando você precisar acessar uma nova tabela Oracle ou alterar a estrutura de uma tabela Oracle, essas alterações deverão ser refletidas na tabela externa do PostgreSQL. Depois de implementar as alterações, você deverá criar uma nova AMI da instância do EC2 e usá-la para configurar o modelo de execução.

Administrador de nuvem, DBA

Configure a extensão postgres_fdw na instância do Aurora compatível com PostgreSQL.

  1. Configure postgres_fdw na instância do Aurora compatível com PostgreSQL. Isso se conecta ao banco de dados PostgreSQL no Amazon EC2, que atua como um nó intermediário entre a instância do Aurora compatível com PostgreSQL e o Oracle Database.

  2. Conecte-se à instância do Aurora compatível com PostgreSQL e execute o comando a seguir.

    create extension postgres_fdw; CREATE SERVER pgoradb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'Domain Name', port '5432'); CREATE USER MAPPING for postgres SERVER pgoradb OPTIONS (user 'pguser', password '<password>'); CREATE FOREIGN TABLE data_mart.name_data(     name_type CHARACTER VARYING(15) NOT NULL,     name CHARACTER VARYING(45) NOT NULL ) SERVER pgoradb OPTIONS (schema_name 'public', table_name 'name_data'); select count(*) from data_mart.name_data;

Isso conclui a configuração de um link de banco de dados do Aurora compatível com PostgreSQL para o Oracle Database.

A solução fornece uma estratégia de recuperação de desastres (DR), caso a instância do EC2 que hospeda o banco de dados PostgreSQL falhe. O grupo do Auto Scaling inicia uma nova instância do EC2 e atualiza o DNS com o endereço IP da nova instância do EC2. Isso garante que as tabelas externas na instância do Aurora compatível com PostgreSQL possam acessar as tabelas Oracle sem intervenção manual.

Administrador de nuvem, DBA
TarefaDescriçãoHabilidades necessárias

Crie um modelo de execução do EC2.

  1. Crie uma AMI da instância do EC2 que contém a extensão oracle_fdw PostgreSQL.

  2. Use o AMI para criar um modelo de execução EC2 .

Administrador de nuvem, DBA

Configure um grupo-destino, o Network Load Balancer e o grupo do Auto Scaling.

  1. Para criar um grupo-destino, escolha Instâncias como o tipo de destino. Em Protocolo, escolha TCP e, em Porta, escolha 5432. Em seguida, escolha a VPC em que você deseja o grupo-alvo e selecione a verificação de integridade adequada.

  2. Crie um Network Load Balancer interno na VPC. Configure o balanceador de carga para escutar em protocol:port TCP:5432. Em Ação padrão, como Encaminhar para, escolha o grupo de destino que você criou.

  3. Configurar um grupo do Auto Scaling usando um modelo de inicialização que você criou.

  4. Configure o grupo do Auto Scaling com a VPC e as sub-redes adequadas que serão usadas para iniciar as instâncias do EC2. 

  5. Para a opção Balanceamento de carga, escolha Anexar a um balanceador de carga existente e selecione o Grupo-destino que você criou. Para Verificação de integridade, selecione ELB.

  6. Defina a capacidade desejada e mínima como 2 e defina a capacidade máxima com um número maior, conforme necessário para suportar a carga com HA, em Políticas de escalabilidade.

  7. Para enviar alertas para a equipe de operações, adicione notificações para eventos como Inicialização ou Encerramento.

  8. Revise a configuração e escolha Criar grupo do Auto Scaling.

Ao concluir, o grupo do Auto Scaling inicia o número desejado de instâncias do EC2 contendo a extensão PostgreSQL oracle_fdw que se conecta ao Oracle Database.

Observação: Quando você precisar acessar uma nova tabela Oracle ou alterar a estrutura de uma tabela Oracle, essas alterações deverão ser refletidas na tabela externa do PostgreSQL. Depois de implementar as alterações, você deverá criar uma nova AMI da instância do EC2 e usá-la para configurar o modelo de execução.

Administrador de nuvem, DBA

Configure a extensão postgres_fdw na instância do Aurora compatível com PostgreSQL.

Configure postgres_fdw na instância do Aurora compatível com PostgreSQL. Isso se conecta ao banco de dados PostgreSQL no EC2 por meio de um Network Load Balancer. A instância do PostgreSQL no EC2 atua como um nó intermediário entre a instância do Aurora compatível com PostgreSQL e o Oracle Database.

Conecte-se à instância do Aurora compatível com PostgreSQL e execute o comando a seguir.

create extension postgres_fdw; CREATE SERVER pgoradb FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'postgres', host 'DNS name of Network Load Balancer', port '5432'); CREATE USER MAPPING for postgres SERVER pgoradb OPTIONS (user 'pguser', password '<password>'); CREATE FOREIGN TABLE data_mart.name_data( name_type CHARACTER VARYING(15) NOT NULL, name CHARACTER VARYING(45) NOT NULL ) SERVER pgoradb OPTIONS (schema_name 'public', table_name 'name_data'); select count(*) from data_mart.name_data;

Isso conclui a configuração de um link de banco de dados do Aurora compatível com PostgreSQL para o Oracle Database. 

Caso o EC2 que hospeda o banco de dados PostgreSQL apresente falhas, o Network Load Balancer identificará a falha e interromperá o tráfego para a instância do EC2 que falhou. O grupo do Auto Scaling inicia uma nova instância do EC2 e a registrará no balanceador de carga. Isso garante que, após a falha da instância do EC2 original, as tabelas externas na instância do Aurora compatível com PostgreSQL possam acessar as tabelas Oracle sem intervenção manual.

Administrador de nuvem, DBA
TarefaDescriçãoHabilidades necessárias

Configure a extensão oracle_fdw na instância do Aurora compatível com PostgreSQL.

Para o banco de dados Aurora compatível com PostgreSQL versão 12.7 e posterior, a extensão oracle_fdw está disponível de forma nativa. Isso elimina a necessidade de criar o banco de dados PostgreSQL intermediário em uma instância do EC2. A instância do Aurora compatível com PostgreSQL poderá se conectar diretamente ao Oracle Database.

  1. Para criar a extensão oracle_fdw, faça login na instância do Aurora compatível com PostgreSQL e execute o comando a seguir.

    create extension oracle_fdw;
  2. Crie o wrapper externo de dados. Substitua os seguintes valores pelos detalhes do seu servidor de banco de dados Oracle:

    • <Oracle DB Server IP>

    • <Oracle DB Port>

    • <Oracle_SID>

    create server oradb foreign data wrapper oracle_fdw options (dbserver '//<Oracle DB Server IP>:<Oracle DB Port>/<Oracle_SID>');
  3. Para criar o mapeamento do usuário e uma tabela externa que mapeia para a tabela Oracle, execute o comando a seguir. Observe que, no código de exemplo, DMS_SAMPLE é usado como o esquema Oracle que contém a NAME_DATA tabela e dms_sample é sua senha. Substitua-os conforme for necessário.  Além disso, a tabela externa precisa ser criada na instância do Aurora compatível com PostgreSQL para acessar todas as outras tabelas do Oracle.

    create user mapping for postgres server oradb options (user 'DMS_SAMPLE', password 'dms_sample'); CREATE FOREIGN TABLE name_data(     name_type character varying(15) OPTIONS (key 'true') NOT NULL,     name character varying(45)  OPTIONS (key 'true') NOT NULL )SERVER oradb OPTIONS (schema 'DMS_SAMPLE', table 'NAME_DATA');

    Uma tabela externa semelhante deverá ser criada para cada tabela Oracle que requer acesso da instância do PostgreSQL.

Administrador de nuvem, DBA
TarefaDescriçãoHabilidades necessárias

Configure o gateway no servidor de banco de dados Oracle on-premises.

  1. Como usuário raiz, instale o gerenciador de drivers UnixODBC mais recente.

    sudo yum install unixODBC*
  2. Instale o driver (psqlODBC) ODBC do PostgreSQL.

    sudo wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum install pgdg-redhat-repo-latest.noarch.rpm sudo yum install postgresql12-odbc
  3. Crie um nome de fonte de dados (DSN) ODBC para o driver.

    O gerenciador de drivers UnixODBC fornece os utilitários de linha de comando odbcinst, odbc_config e isql, usados para configurar e testar o driver. Usando odbcinst nossos odbc_config utilitários, você poderá localizar os arquivos do gerenciador de drivers UnixODBC para passar informações do driver para criar o DSN.

    odbcinst -j

    Veja o código a seguir mostrando um exemplo de saída.

    unixODBC 2.3.1 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 odbc_config --odbcini --odbcinstini /etc/odbc.ini /etc/odbcinst.ini

    Na saída do exemplo, você poderá ver os arquivos odbcinst.ini e odbc.ini. Basicamente, odbcinst.ini é um arquivo de registro e configuração para drivers ODBC em um ambiente, enquanto odbc.ini é um arquivo de registro e configuração para DSNs ODBC. Para habilitar os drivers, você precisa modificar esses dois arquivos.

  4. Configure as bibliotecas de drivers psqlODBC no arquivo do driver /etc/odbcinst.ini ODBC e adicione as seguintes linhas ao final do arquivo. Essas linhas fazem uma entrada para o driver.

    [PostgreSQL] Description     = ODBC for PostgreSQL Driver          = /usr/lib/psqlodbcw.so Setup           = /usr/lib/libodbcpsqlS.so Driver64        = /usr/lib64/psqlodbcw.so Setup64         = /usr/lib64/libodbcpsqlS.so FileUsage       = 1
  5. Crie um DNS em / arquivo etc/odbc.ini. O gerenciador de drivers lê esse arquivo para determinar como se conectar ao banco de dados usando os detalhes do driver especificados em odbcinst.ini. Substitua os seguintes parâmetros por valores reais:

    • <PostgreSQL Port>

    • <PostgreSQL Database Name>

    • <Aurora PostgreSQL Endpoint>

    • <PostgreSQL username>

    • <PostgreSQL password>

    [pgdsn] Driver=/usr/pgsql-12/lib/psqlodbc.so Description=PostgreSQL ODBC Driver Database=<PostgreSQL Database Name> Servername=<Aurora PostgreSQL Endpoint> Username=<PostgreSQL username> Password=<PostgreSQL password> Port=<PostgreSQL Port> UseDeclareFetch=1 CommLog=/tmp/pgodbclink.log Debug=1 LowerCaseIdentifier=1
  6. Usando o utilitário isql, teste a conexão ODBC (psqlODBC) com o DSN do banco de dados PostgreSQL que você criou.

    isql -v pgdsn

    Veja o código a seguir mostrando um exemplo de saída.

    +---------------------------------------+ | Connected!                        | |                                         | | sql-statement                    | | help [tablename]                | | quit                                   | |                                         | +---------------------------------------+ quit
  7. Usando o DSN, crie o gateway para o manipulador de serviços ODBC (HS).

    Como usuário oracle, crie um arquivo initDSN.ora no local $ORACLE_HOME/hs/admin. Nesse caso, pgdsn é o DSN, então você precisa criar um arquivo chamado initpgdsn.ora.

    more initpgdsn.ora

    Veja o código a seguir mostrando um exemplo de saída.

    # This is a sample agent init file that contains the HS parameters that are # needed for the Database Gateway for ODBC # # HS init parameters # HS_FDS_CONNECT_INFO=pgdsn HS_FDS_TRACE_LEVEL=OFF HS_FDS_TRACE_FILE_NAME=/tmp/ora_hs_trace.log HS_FDS_SHAREABLE_NAME=/usr/lib64/libodbc.so HS_NLS_NCHAR=UCS2 HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8 # # ODBC specific environment variables # set ODBCINI=/etc/odbc.ini
  8. Ajuste o receptor ($ORACLE_HOME/network/admin/listener.ora) adicionando a entrada DSN SID_LIST_LISTENER.

    more $ORACLE_HOME/network/admin/listener.ora

    Veja o código a seguir mostrando um exemplo de saída.

    SID_LIST_LISTENER =   (SID_LIST =    (SID_DESC=     (SID_NAME = pgdsn)     (ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/db_1)     (ENVS="LD_LIBRARY_PATH=/lib64:/usr/lib:/usr/lib64:/u01/app/oracle/product/12.2.0.1/db_1")     (PROGRAM=dg4odbc)    ) )
  9. Ajuste o (tnsname) adicionando a entrada DSN $ORACLE_HOME/network/admin/tnsnames.ora.

    more $ORACLE_HOME/network/admin/tnsnames.ora

    Veja o código a seguir mostrando um exemplo de saída.

    pgdsn=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=pgdsn))(HS=OK))
  10. Reinicie o receptor Oracle para que as entradas relacionadas ao DSN feitas nos arquivos de rede possam entrar em vigor, alterando <Listener Name> com o nome adequado do receptor Oracle.

    lsnrctl stop <Listener Name> lsnrctl start <Listener Name>

    Depois de reiniciar o receptor Oracle, ele criará um manipulador Oracle HS com um nome DSN (pgdsn).

  11. Use o DSN para criar um link de banco de dados Oracle para acessar o banco de dados PostgreSQL fazendo login no Oracle Database.

    create public database link pgdb connect to "postgres" identified by "postgres" using 'pgdsn';
  12. Acesse os dados do PostgreSQL usando o link do banco de dados Oracle criado.

    select count(*) from "pg_tables"@pgdb;
DBA

Embora a extensão oracle_fdw esteja disponível com a versão 12.7 e posterior do Aurora compatível com PostgreSQL, esse padrão inclui soluções para versões anteriores dos bancos de dados Aurora compatíveis com PostgreSQL, porque muitos clientes oferecem suporte a versões mais antigas de bancos de dados Aurora compatíveis com PostgreSQL, e a atualização de um banco de dados envolve vários níveis de testes de desempenho e aplicativos. Além disso, o atributo de link de banco de dados é amplamente usado, e é o objetivo deste artigo fornecer opções para todas as versões do Aurora compatível com PostgreSQL.