As instruções a seguir mostram como conectar o Oracle no Linux ao PostgreSQL. Para obter mais informações sobre DG4ODBC, consulte nosso tutorial DG4ODBC.
- Faça o download do driver ODBC PostgreSQL de 64 bits para Linux.
- Instale e licencie o driver ODBC do PostgreSQL na máquina em que o Oracle está instalado.
Para obter instruções de instalação, consulte a documentação do driver ODBC.
Observação Você precisa do gerenciador de driver unixODBC instalado em sua máquina. A distribuição Easysoft inclui uma versão do unixODBC Driver Manager com a qual o driver ODBC Easysoft PostgreSQL foi testado. O programa de instalação do driver Easysoft oferece a opção de instalar o unixODBC.
- Crie uma fonte de dados ODBC em /etc/odbc.ini que se conecte ao banco de dados PostgreSQL que você deseja acessar do Oracle. Por exemplo:
[POSTGRES_SAMPLE] Driver=Easysoft ODBC-Postgres Server Description=Easysoft ODBC-Postgres Server Server=192.0.2.1 Port=5432 Database=employees User=postgres Password=p4550rd Logging=No LogFile= Encrypt=No
- Use o isql para testar a nova fonte de dados. Por exemplo:
cd /usr/local/easysoft/unixODBC/bin ./isql.sh -v POSTGRESQL_SAMPLE
No prompt, digite "help" para exibir uma lista de tabelas. Para sair, pressione return em uma linha de prompt vazia.
Se você não conseguir se conectar, consulte este artigo para obter assistência.
- Crie um arquivo init DG4ODBC. Para fazer isso, mude para o
hs/admin
subdiretório. Por exemplo:cd $ORACLE_HOME/product/11.2.0/xe/hs/admin
Crie uma cópia do arquivoinitdg4odbc.ora
. Nomeie o novo arquivoinitpostgresql.ora
.
- Certifique-se de que esses parâmetros e valores estejam presentes em seu arquivo init:
HS_FDS_CONNECT_INFO = my_postgresql_odbc_dsn
Substitua my_postgresql_odbc_dsn com o nome de uma fonte de dados do driver ODBC do PostgreSQL que se conecta ao servidor PostgreSQL de destino. Por exemplo
HS_FDS_CONNECT_INFO = "POSTGRES_SAMPLE"
- Comente a linha que permite o rastreamento DG4ODBC. Por exemplo:
#HS_FDS_TRACE_LEVEL = <trace_level>
- Adicione uma entrada a
listener.ora
que cria um SID_NAME para DG4ODBC. Por exemplo:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=postgresql) (ORACLE_HOME=$ORACLE_HOME) (PROGRAM=dg4odbc) ) )
- Adicione uma entrada DG4ODBC a
tnsnames.ora
que especifica o SID_NAME criado na etapa anterior. Por exemplo:POSTGRESQL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = postgresql) ) (HS = OK) )
Substitua oracle_host com o nome do host de sua máquina Oracle.
- Inicie (ou reinicie) o Oracle Listener. Por exemplo:
lsnrctl stop lsnrctl start
- Conecte-se ao seu banco de dados Oracle no SQL*Plus.
- No SQL*Plus, crie um link de banco de dados para o servidor PostgreSQL de destino. Por exemplo:
CREATE PUBLIC DATABASE LINK postgresqllink CONNECT TO "my_postgresql_user" IDENTIFIED by "my_postgresql_password" USING 'postgresql'; SELECT * from employees@postgresqllink
Observações
- Se você tiver problemas para se conectar ao PostgreSQL do Oracle, habilite o rastreamento DG4ODBC e verifique os arquivos de rastreamento gravados no
hs/log
diretório. Para habilitar o rastreamento DG4ODBC, adicione a linhaHS_FDS_TRACE_LEVEL = DEBUG
parainitpostgresql.ora
e, em seguida, inicie / reinicie o ouvinte Oracle. Se olog
diretório não existe, crie-o. Por exemplo:mkdir log chmod +w log
- Se você receber o erro "ORA-00997:uso ilegal de tipo de dados LONG", adicione uma das seguintes entradas à sua fonte de dados ODBC:
DisguiseLong=1 # For non-Wide PostgreSQL long columns LimitLong=size in bytes # If this value is too big you will get ORA-00997
-Ou-
DisguiseWlong=1 LimitLong=size in bytes# If this value is too big you will get ORA-00997
- Se você receber "ORA-28562:erro de truncamento de dados de serviços heterogêneos", ao trabalhar com dados do PostgreSQL no Oracle, podemos ter uma solução alternativa para você, mas você precisa entender as implicações de usá-lo. Para obter mais informações, entre em contato com a equipe de suporte da Easysoft ().