sql >> データベース >  >> RDS >> Oracle

Oracle21cをSQLServerに接続する

    SQLServerODBCドライバーをOracleのHeterogeneousServicesODBCエージェントであるDG4ODBCとともに使用して、Oracle21cをSQLServerに接続します。

    1. DG4ODBCのバージョンが32ビットか64ビットかを確認します:
      file dg4odbc

      fileの場合 コマンドの出力には、「ELF 64ビットLSB実行可能ファイル」などが含まれます。DG4ODBCは64ビットであり、SQLServerODBCドライバーの64ビットバージョンを使用する必要があります。

      それ以外の場合は、プラットフォーム用の32ビットSQLServerODBCドライバーをダウンロードします。

    2. DG4ODBCがインストールされているマシンにSQLServerODBCドライバーをインストールし、ライセンスを取得してテストします。

      インストール手順については、SQLServerODBCドライバーのドキュメントを参照してください。設定する必要のある環境変数(LD_LIBRARY_PATH)については、ドキュメントを参照してください。 、LIBPATHLD_RUN_PATH またはSHLIB_PATH プラットフォームとリンカーによって異なります。

    3. DG4ODBC初期化ファイルを作成します。例:
      cd $ORACLE_HOME/hs/admin
      cp initdg4odbc.ora initmssql.ora
    4. これらのパラメータと値がinitファイルに存在することを確認してください:
      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 
      

      my_sql_server_odbc_dsnを置き換えます ターゲットSQLServerデータベースに接続するSQLServerODBCドライバーデータソースの名前。

    5. $ORACLE_HOME/network/admin/listener.oraにエントリを追加します これにより、DG4ODBCのSID_NAMEが作成されます。例:
      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)
         )
       )
      

      oracle_home_directoryを置き換えます $ORACLE_HOMEの値を使用 。

    6. DG4ODBCエントリを$ORACLE_HOME/network/admin/tnsnames.oraに追加します これは、前の手順で作成したSID_NAMEを指定します。例:
      MSSQL=
       (DESCRIPTION=
         (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
         (CONNECT_DATA= (SID=mssql))
         (HS=OK)
       )
    7. Oracleリスナーを起動(または再起動)します:
      cd $ORACLE_HOME/bin
      ./lsnrctl stop
      ./lsnrctl start
    8. SQL*PlusでOracleデータベースに接続します。
    9. SQL * Plusで、ターゲットSQLServerデータベースのデータベースリンクを作成します。例:
      CREATE PUBLIC DATABASE LINK mssqllink CONNECT TO
      "dbuser" IDENTIFIED BY "dbpassword" using 'MSSQL';

      dbuserを置き換えます およびdbpassword ターゲットSQLServerデータベースの有効なユーザー名とパスワードを使用します。

    メモ
    • Oracle21cバージョンのDG4ODBCはSQLDriverConnectを使用しなくなりました ODBCデータソースに接続します。 SQLConnectを使用します 代わりに、HS_NLS_NCHAR = UCS2をサポートしていません 。同様に、DSNなしの接続はSQLConnectでは機能しません 。
    • リンクされたテーブルにROWIDという名前の列が含まれている場合、クエリは次のエラーで失敗します:
      ORA-02070: database SQLSRV2019 does not support ROWIDs in this context

      これを回避するには、列の名前をROWIDからROWNUMに変更します。


    1. SQLServerデータベースのすべてのデフォルト制約を削除する方法-SQLServer/TSQLチュートリアルパート94

    2. MySQLvarcharインデックスの長さ

    3. ゼロからデータベースモデルを作成する方法

    4. SQLServerでUPDATEパススルークエリを実行する方法