sql >> Database teknologi >  >> RDS >> Oracle

Tilslutning af Oracle 21c til SQL Server

Brug SQL Server ODBC-driveren med Oracles Heterogeneous Services ODBC-agent, DG4ODBC, til at forbinde Oracle 21c til SQL Server.

  1. Tjek, om din version af DG4ODBC er 32-bit eller 64-bit:
    file dg4odbc

    Hvis file kommandoens output indeholder "ELF 64-bit LSB eksekverbar", eller noget lignende, DG4ODBC er 64-bit, og du skal bruge en 64-bit version af SQL Server ODBC-driveren.

    Ellers skal du downloade 32-bit SQL Server ODBC-driveren til din platform.

  2. Installer, licenser og test SQL Server ODBC-driveren på den maskine, hvor DG4ODBC er installeret.

    For installationsinstruktioner, se SQL Server ODBC-driverdokumentationen. Se dokumentationen for at se, hvilke miljøvariabler du skal indstille (LD_LIBRARY_PATH , LIBPATH , LD_RUN_PATH eller SHLIB_PATH afhængig af platform og linker).

  3. Opret en DG4ODBC init-fil. For eksempel:
    cd $ORACLE_HOME/hs/admin
    cp initdg4odbc.ora initmssql.ora
  4. Sørg for, at disse parametre og værdier er til stede i din init-fil:
    HS_FDS_CONNECT_INFO = my_sql_server_odbc_dsn
    HS_FDS_SHAREABLE_NAME = /usr/local/easysoft/unixODBC/lib/libodbc.so
    HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 
    

    Erstat my_sql_server_odbc_dsn med navnet på en SQL Server ODBC-driverdatakilde, der forbinder til SQL Server-måldatabasen.

  5. Tilføj en post til $ORACLE_HOME/network/admin/listener.ora der opretter en SID_NAME for DG4ODBC. For eksempel:
    SID_LIST_LISTENER =
     (SID_LIST =
       (SID_DESC=
         (SID_NAME=mssql)
         (ORACLE_HOME=oracle_home_directory)
         (PROGRAM=dg4odbc)
         (ENVS=LD_LIBRARY_PATH = /usr/local/easysoft/unixODBC/lib:
                /usr/local/easysoft/lib)
       )
     )
    

    Erstat oracle_home_directory med værdien $ORACLE_HOME .

  6. Tilføj en DG4ODBC-post til $ORACLE_HOME/network/admin/tnsnames.ora der specificerer SID_NAME oprettet i det forrige trin. For eksempel:
    MSSQL=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
       (CONNECT_DATA= (SID=mssql))
       (HS=OK)
     )
  7. Start (eller genstart) Oracle Listener:
    cd $ORACLE_HOME/bin
    ./lsnrctl stop
    ./lsnrctl start
  8. Opret forbindelse til din Oracle-database i SQL*Plus.
  9. I SQL*Plus skal du oprette et databaselink til SQL Server-måldatabasen. For eksempel:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

    Erstat dbuser og dbpassword med et gyldigt brugernavn og en adgangskode til SQL Server-måldatabasen.

Bemærkninger
  • Oracle 21c-versionen af ​​DG4ODBC bruger ikke længere SQLDriverConnect for at oprette forbindelse til en ODBC-datakilde. Den bruger SQLConnect i stedet, som ikke understøtter HS_NLS_NCHAR = UCS2 . Ligeledes virker DSN-løse forbindelser ikke med SQLConnect .
  • Hvis din sammenkædede tabel indeholder en kolonne med navnet ROWID, vil din forespørgsel mislykkes med fejlen:
    ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

    For at omgå dette skal du ændre navnet på kolonnen fra ROWID til ROWNUM.


  1. SQL Server brugerdefinerede funktioner

  2. Forberedelse af en MySQL- eller MariaDB-server til produktion - del 1

  3. Opret en skalær brugerdefineret funktion i SQL Server

  4. Hentning af ORA-03115:ikke-understøttet netværksdatatype eller repræsentationsfejl under hentning af array af varchar fra anonym pl/sql