Подключение Oracle к SQL Server через ссылку на базу данных - PullRequest
8 голосов
/ 24 мая 2011

Я пытаюсь подключиться из Oracle 10G (в UNIX) к базе данных SQL Server (в Windows).Я посмотрел на руководство, и я признаю, что нахожу документацию довольно трудно следовать.Кажется, есть несколько вариантов для использования, но ни одна из документации не описывает, как работает каждая опция.

В качестве примера мне была предоставлена ​​следующая информация о базе данных, к которой я должен подключиться (то есть база данных SQL Server)

  • Имя пользователя
  • Пароль
  • Имя базы данных [предположим, что имя базы данных - 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

Парав вещах, в которых я не уверен

  • Где я могу указать имя пользователя и пароль для доступа к серверу sql с базы данных oracle на сервер sql db
  • Прочитав информацию в ИнтернетеЯ могу видеть некоторых людей, ссылающихся на источник данных DSN.Мне сказали, что информация, которая у меня есть, это все, что мне нужно.Это правильно или мне нужно что-то еще?
  • sid, который я указал в inithsodbc.ora и tnsnames.ora, на самом деле является базой данных сервера sql.Это правильно?

Любая помощь с вышеупомянутым будет оценена.Спасибо

Ответы [ 2 ]

4 голосов
/ 25 мая 2011

Я использовал драйверы Data Direct, которые должны были быть настроены на машине Oracle UNIX.Вы должны создать соединение ODBC в UNIX, чтобы иметь возможность видеть SQL Server.(По крайней мере, так было всегда)

2 голосов
/ 15 февраля 2012

Чтобы создать ссылку на базу данных для SQL Server, вы должны заключить имя подключения и пароль в двойные кавычки, как показано ниже:

create database link mysqlink 
connect to "myuser" identified by "mypassword" using 'servername';
...