web-dev-qa-db-ja.com

データベースリンクを介したOracleのSQLServerへの接続

Oracle 10G(UNIXの場合)からSQL Serverデータベース(Windowsの場合)に接続しようとしています。私はマニュアルを見ましたが、ドキュメントを理解するのが非常に難しいと感じていることを認めます。使用するオプションはいくつかあるようですが、各オプションがどのように機能するかを説明しているドキュメントはありません。

例として、接続する必要のあるデータベース(つまり、SQL Serverデータベース)に関する次の情報が提供されています。

  • Username
  • パスワード
  • データベース名[データベース名がdata_extractであると仮定します]

上記を接続するために、私は次の変更を加えました

$ Oracle_HOME/hs/admin/inithsodbc.ora

  HS_FDS_CONNECT_INFO = data_extract
  HS_FDS_TRACE_LEVEL = 0

$ Oracle_HOME/network/admin/tnsnames.ora

  sqlserver.db =
          (DESCRIPTION =
                  (ADDRESS = (protocol=tcp)(Host=10.10.10.10)(port=49400))
                          (connect_data = (sid=data_extract))
                          (hs=ok)
          )

$ Oracle_HOME/network/admin/listener.ora

  LISTENER =
    (DESCRIPTION_LIST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(Host = merlin)(PORT = 1525))
      )
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
    )

  SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
        (SID_NAME = PLSExtProc)
        (Oracle_HOME = /u/app/Oracle/product/10.2.0/db)
        (PROGRAM = extproc)
      )
      (SID_DESC =
        (GLOBAL_DBNAME = db1.mydb.co.uk)
        (Oracle_HOME = /u/app/Oracle/product/10.2.0/db)
        (SID_NAME = billdb)
      )
      (SID_DESC =
          (SID_NAME = data_extract)
          (Oracle_HOME = /u/app/Oracle/product/10.2.0/db)
          (program = hsodbc)
      )
    )

注:listener.oraでは、最後のSID_DESCエントリのみを追加しました。

次に、次に示すようにデータベースリンクを作成しました。

  create database link sqlservdb using 'sqlserver.db';

テーブルにアクセスしようとすると、次のエラーが発生します

  sqlplus> select * from TESTTABLE@sqlservdb;
  select * from TESTTABLE@sqlservdb
                             *
  ERROR at line 1:
  ORA-28545: error diagnosed by Net8 when connecting to an agent
  Unable to retrieve text of NETWORK/NCR message 65535
  ORA-02063: preceding 2 lines from ORASQLSERVER

よくわからないことがいくつかあります

  • OracleデータベースからSQLサーバーデータベースにSQLサーバーにアクセスするためのユーザー名とパスワードはどこで指定しますか
  • インターネットを読んでいると、DSNデータソースを参照している人がいます。私が持っている情報は私が必要とするすべてであると言われています。これは正しいですか、それとも何か他のものが必要ですか?
  • Inithsodbc.oraおよびtnsnames.oraで指定されたSIDは、実際にはSQLサーバーデータベースです。これは正しいです?

上記の助けをいただければ幸いです。ありがとう

9
ziggy

OracleUNIXマシンで構成する必要のあるDataDirectドライバーを使用しました。 SQL Serverを表示できるようにするには、UNIXでODBC接続を作成する必要があります(少なくとも、これは常に私が行ってきた方法です)。

4
cmutt78

SQL Serverへのデータベースリンクを作成するには、以下のように、接続名とパスワードを二重引用符で囲む必要があります。

create database link mysqlink 
connect to "myuser" identified by "mypassword" using 'servername';
2
oscar van zelst