sql >> Databasteknik >  >> RDS >> Oracle

Ansluter Oracle 21c till SQL Server

Använd SQL Server ODBC-drivrutinen med Oracles Heterogeneous Services ODBC-agent, DG4ODBC, för att ansluta Oracle 21c till SQL Server.

  1. Kontrollera om din version av DG4ODBC är 32-bitars eller 64-bitars:
    file dg4odbc

    Om file kommandots utdata innehåller "ELF 64-bitars LSB-körbar", eller något liknande, DG4ODBC är 64-bitars, och du måste använda en 64-bitarsversion av SQL Server ODBC-drivrutinen.

    Annars laddar du ner 32-bitars SQL Server ODBC-drivrutinen för din plattform.

  2. Installera, licensiera och testa SQL Server ODBC-drivrutinen på maskinen där DG4ODBC är installerat.

    För installationsinstruktioner, se SQL Server ODBC-drivrutinens dokumentation. Se dokumentationen för att se vilka miljövariabler du behöver ställa in (LD_LIBRARY_PATH , LIBPATH , LD_RUN_PATH eller SHLIB_PATH beroende på plattform och länk).

  3. Skapa en DG4ODBC init-fil. Till exempel:
    cd $ORACLE_HOME/hs/admin
    cp initdg4odbc.ora initmssql.ora
  4. Se till att dessa parametrar och värden finns 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 
    

    Ersätt my_sql_server_odbc_dsn med namnet på en SQL Server ODBC-drivrutinsdatakälla som ansluter till SQL Server-måldatabasen.

  5. Lägg till en post i $ORACLE_HOME/network/admin/listener.ora som skapar en SID_NAME för DG4ODBC. Till exempel:
    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)
       )
     )
    

    Ersätt oracle_home_directory med värdet $ORACLE_HOME .

  6. Lägg till en DG4ODBC-post i $ORACLE_HOME/network/admin/tnsnames.ora som anger SID_NAME som skapades i föregående steg. Till exempel:
    MSSQL=
     (DESCRIPTION=
       (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
       (CONNECT_DATA= (SID=mssql))
       (HS=OK)
     )
  7. Starta (eller starta om) Oracle Listener:
    cd $ORACLE_HOME/bin
    ./lsnrctl stop
    ./lsnrctl start
  8. Anslut till din Oracle-databas i SQL*Plus.
  9. Skapa en databaslänk för SQL Server-måldatabasen i SQL*Plus. Till exempel:
    CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
    "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

    Ersätt dbuser och dbpassword med ett giltigt användarnamn och lösenord för SQL Server-måldatabasen.

Anteckningar
  • Oracle 21c-versionen av DG4ODBC använder inte längre SQLDriverConnect för att ansluta till en ODBC-datakälla. Den använder SQLConnect istället, som inte stöder HS_NLS_NCHAR = UCS2 . På samma sätt fungerar inte DSN-lösa anslutningar med SQLConnect .
  • Om din länkade tabell innehåller en kolumn med namnet ROWID, kommer din fråga att misslyckas med felet:
    ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

    För att kringgå detta, ändra namnet på kolumnen från ROWID till ROWNUM.


  1. Körs servern på host localhost (::1) och accepterar TCP/IP-anslutningar på port 5432?

  2. Hämta lista över alla noll- och inte-nollkolumner i SQL Server-databasen - SQL Server / T-SQL självstudie del 53

  3. Kan JavaScript ansluta till MySQL?

  4. Hur date_trunc() fungerar i PostgreSQL