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 banco de dados Oracle e o Aurora Postgre - Compatível SQL
Criado por Jeevan Shetty (AWS), Bhanu Ganesh Gudivada (), Sushant Deshmukh (AWS), Uttiya Gupta () e Vikas Gupta () AWS AWS AWS
Ambiente: PoC ou piloto | Origem: banco de dados Oracle | Alvo: Compatível com Aurora Postgre SQL |
Tipo R: redefinir a plataforma | Workload: Oracle; código aberto | Tecnologias: migração; bancos de dados |
AWSserviços: Amazon Aurora; Amazon Auto EC2 Scaling; Amazon Route 53 |
Resumo
Como parte da migração para a nuvem da Amazon Web Services (AWS), você pode modernizar seus aplicativos para usar bancos de dados nativos da nuvem. A migração do banco de dados Oracle para a edição compatível com o Amazon Aurora SQL Postgre é uma dessas etapas 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 Oracle Database para o Aurora Postgre SQL -Compatível, os links do banco de dados do servidor do Oracle Database para outros servidores do Oracle Database devem ser convertidos em links do banco de dados. PostgreSQL-to-Oracle
Esse padrão mostra como você pode configurar links de banco de dados de um servidor de banco de dados Oracle para o banco de dados compatível com Aurora 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 Postgre para o SQL banco de dados Oracle.
Após a migração e a conversão do Oracle Database para um banco de dados SQL compatível com o Aurora Postgre, 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 Postgre SQL -Compatível como destino, os Oracle Database Gateways devem 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 SQL compatível com o Aurora Postgre como banco de dados de origem e o banco de dados Oracle como destino, a oracle_fdw
extensão não estará disponível nativamente. Em vez disso, você pode usar a postgres_fdw
extensão no banco de dados SQL compatível com o Aurora Postgre e configurá-la oracle_fdw
em um banco de dados Postgre SQL criado no Amazon Elastic Compute Cloud (Amazon). EC2 Esse banco de dados atua como intermediário entre o banco de dados compatível com o Aurora SQL Postgre e o banco de dados Oracle. Esse padrão inclui duas opções para configurar o link do banco de dados com o Aurora Postgre SQL 12.6 e versões anteriores:
Configure a EC2 instância em um grupo do Amazon EC2 Auto Scaling com um script de EC2 inicialização da Amazon que atualiza uma entrada interna do Sistema de Nomes de Domínio (DNS) no Amazon Route 53.
Configure a EC2 instância 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 a versão 12.7 e posterior SQL compatível com o Aurora Postgre, você pode usar a extensão. oracle_fdw
Pré-requisitos e limitações
Pré-requisitos
Limitações
Versões do produto
Arquitetura
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 local ou na AWS nuvem.
Pilha de tecnologias de destino
Opção 1
Amazon Aurora SQL Postgre — Edição compatível
Banco de SQL dados Postgre em uma instância da Amazon EC2
Grupo Amazon EC2 Auto Scaling
Amazon Route 53
Serviço de notificação simples da Amazon (AmazonSNS)
AWSIdentity and Access Management (IAM)
AWS Direct Connect
Opção 2
Amazon Aurora SQL Postgre — Edição compatível
Banco de SQL dados Postgre em uma instância da Amazon EC2
Grupo Amazon EC2 Auto Scaling
Network Load Balancer
Amazon SNS
Conexão direta
Opção 3
Arquitetura de destino
Opção 1
O diagrama a seguir mostra a configuração do link do banco de dados usando as postgres_fdw
extensões oracle_fdw
e, com HA fornecido por um grupo do Amazon EC2 Auto Scaling e pelo Route 53.
Uma instância SQL compatível com o Aurora Postgre com a postgres_fdw
extensão se conecta ao banco de dados Postgre SQL na Amazon. EC2
O SQL banco de dados Postgre com a oracle_fdw
extensão está em um grupo Auto Scaling.
O SQL banco de dados Postgre na Amazon EC2 usa o Direct Connect para se conectar ao Oracle Database no local.
O Oracle Database é configurado com o Oracle Database Gateways para conexões do Oracle Database com o banco de SQL dados Postgre em. AWS
IAMconcede permissão à Amazon EC2 para atualizar os registros do Route 53.
SNSA Amazon envia alertas para ações automáticas de escalabilidade.
O nome de domínio configurado no Route 53 aponta para o endereço IP da EC2 instância SQL Amazon do Postgre.
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.
Uma instância SQL compatível com o Aurora Postgre com a postgres_fdw
extensão se conecta ao Network Load Balancer.
O Network Load Balancer distribui a conexão do banco de dados SQL compatível com o Aurora Postgre para o banco de dados Postgre na Amazon. SQL EC2
O SQL banco de dados Postgre com a oracle_fdw
extensão está em um grupo Auto Scaling.
O SQL banco de dados Postgre na Amazon EC2 usa o Direct Connect para se conectar ao Oracle Database no local.
O Oracle Database é configurado com o Oracle Database Gateways para conexões do Oracle Database com o banco de SQL dados Postgre em. AWS
SNSA Amazon 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 oracle_fdw
extensão em um banco de dados compatível com o Aurora PostgreSQL.
Uma instância SQL compatível com o Aurora Postgre com a extensão oracle_fdw
usa o Direct Connect para se conectar ao Oracle Database.
Os gateways de banco de dados Oracle configurados no Oracle Server permitem a conectividade por meio do Direct Connect ao banco de dados compatível com o Aurora SQL Postgre.
Ferramentas
AWSserviços
O Amazon Aurora Postgre SQL -Compatible Edition é um mecanismo de banco de dados relacional totalmente gerenciado e ACID compatível que ajuda você a configurar, operar e escalar implantações do Postgre. SQL
AWSO Direct Connect conecta sua rede interna a um local do Direct Connect por meio de um cabo de fibra óptica Ethernet padrão. Com essa conexão, você pode criar interfaces virtuais diretamente para AWS serviços públicos, ignorando os provedores de serviços de Internet em seu caminho de rede.
O Amazon Elastic Compute Cloud (AmazonEC2) fornece capacidade de computação escalável na AWS nuvem. Você poderá iniciar quantos servidores virtuais precisar e escalá-los na vertical rapidamente. Nesse padrão, as opções 1 e 2 usam uma EC2 instância para hospedar um SQL banco de dados Postgre.
O Amazon EC2 Auto Scaling ajuda você a manter a disponibilidade do aplicativo e permite que você adicione ou remova automaticamente EC2 instâncias da Amazon de acordo com as condições definidas por você.
AWSO Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O Amazon Route 53 é um serviço DNS web altamente disponível e escalável.
O Amazon Simple Notification Service (AmazonSNS) ajuda você a coordenar e gerenciar a troca de mensagens entre editores 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, você pode distribuir o tráfego entre instâncias, contêineres e endereços IP do Amazon Elastic Compute Cloud (AmazonEC2) em uma ou mais zonas de disponibilidade. Esse padrão usa um Network Load Balancer.
Outros serviços
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|
Crie uma EC2 instância e configure a extensão oracle_fdw Postgre. SQL | Crie uma EC2 instância com o sistema operacional Amazon Linux 2. Observação: o Amazon Linux 2 está chegando ao fim do suporte. Para obter mais informações, consulte o Amazon Linux 2 FAQs. Para instalar o PostgreSQL, faça login na EC2 instância 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
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
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
Certifique-se de verificar se pg_config corresponde à versão correta. which pg_config
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. Faça login no SQL banco de dados Postgre e crie a oracle_fdw extensão. sudo su - postgres
psql postgres
create extension oracle_fdw;
Crie um SQL usuário do Postgre que será o proprietário das tabelas externas. CREATE USER pguser WITH PASSWORD '<password>';
GRANT CONNECT ON DATABASE postgres TO pguser;
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;
Para criar o mapeamento do usuário e uma tabela externa que mapeia para a tabela Oracle, conecte-se ao SQL banco de dados Postgre 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');
Nota: O exemplo a seguir cria uma tabela externa no Postgre SQL para uma tabela no Oracle Database. Uma tabela externa semelhante deve ser criada para cada tabela Oracle que requer acesso da SQL instância do Postgre. 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;
Configure o SQL banco de dados Postgre na EC2 instância para que ele possa localizar as bibliotecas Oracle durante a inicialização do SQL banco de dados Postgre. 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 |
Tarefa | Descrição | Habilidades necessárias |
---|
Configure uma zona hospedada privada no Amazon Route 53. | Crie uma zona hospedada privada do Amazon Route 53 Anote o nome de domínio, que será associado a uma EC2 instância. Adicione um registro “A” usando uma política de roteamento simples que resolva para o endereço IP da EC2 instância, contendo a extensão oracle_fdw SQL Postgre. 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 IAM política apropriada.
| DBA, administrador de nuvem |
Crie uma IAM função que será anexada a uma EC2 instância. | Para criar uma IAM função que será anexada à EC2 instância, 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 EC2 lançamento. | Crie uma AMI EC2 instância que contenha a SQL extensão oracle_fdw Postgre. Use o AMI para criar um modelo de EC2 lançamento. Para permitir a conexão da instância SQL compatível com Aurora Postgre ao SQL banco de dados Postgre na EC2 instância, associe a IAM função que você criou anteriormente e anexe grupos de segurança. 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. | Para configurar um grupo do Auto Scaling, use o modelo de lançamento que você criou na etapa anterior. Configure VPC as sub-redes apropriadas que serão usadas para iniciar a EC2 instância. A configuração da opção 1 não usa o balanceador de carga. Defina a capacidade desejada, mínima e máxima como 1 em Políticas de escalabilidade. Para enviar alertas para a equipe de operações, adicione notificações para eventos como Inicialização ou Encerramento. Revise a configuração e escolha Criar grupo do Auto Scaling.
Ao concluir, o grupo Auto Scaling inicia a EC2 instância contendo a SQL extensão oracle_fdw Postgre, que se conecta ao Oracle Database. Nota: Quando você precisa acessar uma nova tabela Oracle ou alterar a estrutura de uma tabela Oracle, essas alterações devem ser refletidas na tabela SQL externa do Postgre. Depois de implementar as alterações, você deve criar uma nova AMI EC2 instância e usá-la para configurar o modelo de execução. | Administrador de nuvem, DBA |
Configure a extensão postgres_fdw na instância compatível com Aurora Postgre. SQL | Configure postgres_fdw na instância compatível com o Aurora PostgreSQL. Isso se conecta ao SQL banco de dados Postgre na AmazonEC2, que atua como um nó intermediário entre a instância compatível com o Aurora SQL Postgre e o banco de dados Oracle. Conecte-se à instância SQL compatível com o Aurora Postgre e execute os comandos 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 SQL Postgre - compatível com o banco de dados Oracle. A solução fornece uma estratégia de recuperação de desastres (DR), caso a EC2 instância que hospeda o SQL banco de dados Postgre falhe. O grupo Auto Scaling inicia uma nova EC2 instância e a atualiza DNS com o endereço IP da nova EC2 instância. Isso garante que as tabelas externas na instância SQL compatível com o Aurora Postgre possam acessar as tabelas Oracle sem intervenção manual. | Administrador de nuvem, DBA |
Tarefa | Descrição | Habilidades necessárias |
---|
Crie um modelo de EC2 lançamento. | Crie uma AMI EC2 instância que contenha a SQL extensão oracle_fdw Postgre. Use o AMI para criar um modelo de EC2 lançamento.
| Administrador de nuvem, DBA |
Configure um grupo-destino, o Network Load Balancer e o grupo do Auto Scaling. | Para criar um grupo-destino, escolha Instâncias como o tipo de destino. Para Protocolo, escolha TCP, e para Porta, escolha 5432. Em seguida, escolha VPC onde você deseja o grupo-alvo e selecione a verificação de saúde apropriada. Crie um Network Load Balancer interno no. VPC Configure o balanceador de carga para escutar em TCP protocol:port:5432. Em Ação padrão, como Encaminhar para, escolha o grupo de destino que você criou. Configurar um grupo do Auto Scaling usando um modelo de inicialização que você criou. Configure o grupo Auto Scaling com as sub-redes apropriadas VPC e as que serão usadas para iniciar as instâncias. EC2 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ções de saúde, selecione ELB. 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. Para enviar alertas para a equipe de operações, adicione notificações para eventos como Inicialização ou Encerramento. Revise a configuração e escolha Criar grupo do Auto Scaling.
Ao concluir, o grupo Auto Scaling inicia o número desejado de EC2 instâncias contendo a SQL extensão oracle_fdw Postgre que se conecta ao Oracle Database. Nota: Quando você precisa acessar uma nova tabela Oracle ou alterar a estrutura de uma tabela Oracle, essas alterações devem ser refletidas na tabela SQL externa do Postgre. Depois de implementar as alterações, você deve criar uma nova AMI EC2 instância e usá-la para configurar o modelo de execução. | Administrador de nuvem, DBA |
Configure a extensão postgres_fdw na instância compatível com Aurora Postgre. SQL | Configure postgres_fdw na instância compatível com o Aurora PostgreSQL. Isso se conecta ao SQL banco de dados Postgre EC2 por meio de um Network Load Balancer. A SQL instância Postgre on EC2 atua como um nó intermediário entre a instância compatível com o Aurora SQL Postgre e o banco de dados Oracle. Conecte-se à instância SQL compatível com o Aurora Postgre e execute os comandos 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 do link do banco de dados do Aurora SQL Postgre - compatível com o banco de dados Oracle. Em caso de falha na EC2 hospedagem do SQL banco de dados Postgre, o Network Load Balancer identifica a falha e interrompe o tráfego para a instância com falha. EC2 O grupo Auto Scaling inicia uma nova EC2 instância e a registra no balanceador de carga. Isso garante que, após a falha da EC2 instância original, as tabelas externas na instância SQL compatível com o Aurora Postgre possam acessar as tabelas Oracle sem intervenção manual. | Administrador de nuvem, DBA |
Tarefa | Descrição | Habilidades necessárias |
---|
Configure a extensão oracle_fdw na instância compatível com Aurora Postgre. SQL | Para o banco de dados SQL compatível com o Aurora Postgre, versão 12.7 e posterior, a extensão está disponível de forma nativa. oracle_fdw Isso elimina a necessidade de criar o SQL banco de dados Postgre intermediário em uma EC2 instância. A instância SQL compatível com o Aurora Postgre pode se conectar diretamente ao Oracle Database. Para criar a oracle_fdw extensão, faça login na instância SQL compatível com Aurora Postgre e execute o comando a seguir. create extension oracle_fdw;
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>');
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 estrangeira precisa ser criada na instância SQL compatível com o Aurora Postgre para acessar todas as outras tabelas 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 deve ser criada para cada tabela Oracle que requer acesso da SQL instância do Postgre.
| Administrador de nuvem, DBA |
Tarefa | Descrição | Habilidades necessárias |
---|
Configure o gateway no servidor de banco de dados Oracle on-premises. | Como usuário root, instale o gerenciador de ODBC drivers unix mais recente. sudo yum install unixODBC*
Instale o SQL ODBC driver Postgre (psqlODBC ). 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
Crie um nome ODBC de fonte de dados (DSN) para o driver. O gerenciador de ODBC drivers unix fornece os utilitários de linha de isql comando odbcinst odbc_config ,, e usados para configurar e testar o driver. Usando odbcinst nossos odbc_config utilitários, você pode localizar os arquivos do gerenciador de ODBC drivers unix 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 ODBC drivers em um ambiente, enquanto odbc.ini é um arquivo de registro e configuração para ODBCDSNs. Para habilitar os drivers, você precisa modificar esses dois arquivos. Configure as psqlODBC bibliotecas do ODBC driver no arquivo /etc/odbcinst.ini do driver 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
Crie um DSN no etc/odbc.ini arquivo /. 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: [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
Usando o isql utilitário, teste a ODBC conexão (psqlODBC ) com o SQL banco de dados Postgre DSN 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
Usando oDSN, 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 é oDSN, então você precisa criar um arquivo chamadoinitpgdsn.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
Ajuste o ouvinte ($ORACLE_HOME/network/admin/listener.ora ) adicionando a DSN entrada. 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)
)
)
Ajuste o tnsname ($ORACLE_HOME/network/admin/tnsnames.ora ) adicionando a DSN entrada. 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))
Reinicie o ouvinte Oracle para que as entradas DSN relacionadas feitas nos arquivos de rede possam entrar em vigor, alterando <Listener Name> com o nome apropriado do ouvinte Oracle. lsnrctl stop <Listener Name>
lsnrctl start <Listener Name>
Depois de reiniciar o ouvinte Oracle, ele criará um manipulador Oracle HS com um DSN nome ()pgdsn . Use o DSN para criar um link de banco de dados Oracle para acessar o SQL banco de dados Postgre fazendo login no Oracle Database. create public database link pgdb connect to "postgres" identified by "postgres" using 'pgdsn';
Acesse os SQL dados do Postgre usando o link do banco de dados Oracle criado. select count(*) from "pg_tables"@pgdb;
| DBA |
Recursos relacionados
Mais informações
Embora a oracle_fdw
extensão esteja disponível com a versão 12.7 e posterior SQL compatível com o Aurora Postgre, esse padrão inclui soluções para versões anteriores dos bancos de dados compatíveis com o Aurora Postgre, porque muitos clientes oferecem suporte a versões mais antigas dos bancos SQL de dados compatíveis com o Aurora Postgre, e a atualização de um banco de dados envolve vários níveis de SQL testes de aplicativos e desempenho. Além disso, o recurso de link de banco de dados é amplamente usado, e fornecer opções para todas as versões do Aurora SQL Postgre -Compatível é o objetivo deste artigo.