Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Conectando Oracle ao PostgreSQL


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.
  1. Faça o download do driver ODBC PostgreSQL de 64 bits para Linux.
  2. 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.
  3. 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
    
  4. 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.
  5. 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 arquivo initdg4odbc.ora . Nomeie o novo arquivo initpostgresql.ora .
  6. 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"
    
  7. Comente a linha que permite o rastreamento DG4ODBC. Por exemplo:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  8. 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)
       )
     )
    
  9. 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.
  10. Inicie (ou reinicie) o Oracle Listener. Por exemplo:
    lsnrctl stop
    lsnrctl start
    
  11. Conecte-se ao seu banco de dados Oracle no SQL*Plus.
  12. 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 linha HS_FDS_TRACE_LEVEL = DEBUG para initpostgresql.ora e, em seguida, inicie / reinicie o ouvinte Oracle. Se o log 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 ().