Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Dblink Oracle к MS SQL / 25 сообщений из 32, страница 1 из 2
11.06.2013, 16:00
    #38294326
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
Добрый день.
Установила и настроила freetds и unixodbc все как здесь http://www.sql.ru/forum/431539/2faq-kak-nastroit-odbc-pod-linux-chtoby-dostuchatsya-iz-oracle-do-mssql написано. Но все равно не работает линк, не могу понять в чем причина, ниже привела конфиги, может кто подскажет, где ошибаюсь.

Есть еще предположение, может несовместимость версий или разрядности? У меня Oracle 10g Linux x32 и MS SQL 2012 x64.

%ORACLE_HOME%/hs/admin/initmymssql.ora

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
HS_FDS_CONNECT_INFO = mymssql
HS_FDS_SHAREABLE_NAME = /usr/lib/libodbc.so
HS_FDS_TRACE_LEVEL = 4
HS_FDS_TRACE_FILE_NAME = /tmp/hsodbcsql.trc

# ODBC specific environment variables

set ODBCINI= /etc/odbc.ini



listener.ora

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
TEST =
  (ADDRESS_LIST =
        (ADDRESS= (PROTOCOL= IPC)(KEY= EXTPROCPROD))
        (ADDRESS= (PROTOCOL= TCP)(Host= test.domain )(Port= 1521))
  )

SID_LIST_TEST =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME= %ORACLE_HOME%)
      (SID_NAME = TEST)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = %ORACLE_HOME%)
      (PROGRAM = extproc)
     (SID_DESC =
      (SID_NAME = mymssql)
      (ORACLE_HOME = %ORACLE_HOME%)
      (PROGRAM = hsodbc )
     )
    )
  )



tnsnames.ora

Код: sql
1.
2.
3.
4.
5.
6.
mymssql =
       (DESCRIPTION =
       (ADDRESS = (protocol=tcp)(host=test.domain)(port=1521))
       (connect_data = (sid=mymssql))
       (HS=OK)
       )



[oraprod@sak-oebst02 ~]$ tnsping mymssql

TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 23-MAY-2013 18:04:52

Copyright (c) 1997, 2006, Oracle. All rights reserved.

Used parameter files:
%ORACLE_HOME%/network/admin/PROD_test.domain/sqlnet_ifile.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (protocol=tcp)(host=test)(port=1521)) (connect_data = (sid=mymssql)) (HS=OK))
OK (0 msec)

Создан dblink:

CREATE DATABASE LINK TEST CONNECT TO <пользователь_mssql> IDENTIFIED BY <пароль> USING 'mymssql';

Dblink создан успешно, при проверке соединения через дблинк возникает ошибка:

Код: sql
1.
2.
3.
Error : ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: предшествующий 2 lines из TEST



Сообщение в alert.log
HS: Unable to establish RPC connection to HS Agent...
HS: ... Agent SID = (DESCRIPTION=(ADDRESS=(protocol=tcp)(host=test)(port=1521))(connect_data=(sid=mymssql))), NCR error = 65535 Unable to retrieve text of NETWORK/NCR message 65535
...
Рейтинг: 0 / 0
12.06.2013, 08:57
    #38294871
XCB
XCB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
а odbc соединение отдельно открывается?
ps была какаято утилита для проверки из командной строки название запамятовал
...
Рейтинг: 0 / 0
12.06.2013, 09:15
    #38294872
Digit_ALL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
В файле hsodbcsql.trc может быть подсказка.
Если такого нет, можно попробовать удалить параметр HS_FDS_TRACE_FILE_NAME = /tmp/hsodbcsql.trc, и поискать логи где-то тут: %ORACLE_HOME%/hs/log
...
Рейтинг: 0 / 0
12.06.2013, 09:42
    #38294881
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
XCB,

Я проверяла так как в статье
isql -v mymssql <логин> <пароль>
коннектилось без проблем.
...
Рейтинг: 0 / 0
12.06.2013, 09:46
    #38294886
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
Digit_ALL,


Файл hsodbcsql.trc есть, но он пустой, сделала как Вы написали в %ORACLE_HOME%/hs/log тоже пусто.
...
Рейтинг: 0 / 0
12.06.2013, 16:00
    #38295175
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
tanyshkaконнектилось без проблем.

На всякий случай, запусти isql и проверь что выдает:

Код: sql
1.
select @@servername,db_name()



Но похоже проблема в listener.ora где скорее всего нужно указать ENVS. Я не знаком с freetds. Использую EasySoft драйвер для SQL Server, но принцип должен быть тот-же. Листенер создает "clean environment" процесс и посему библиотеки oracle и freetds и environment variables которыми он пользуется не определены. Их необходимо задать в listener'е, в SID_DESC с помощью ENVS. Вот пример для EasySoft:

Код: plsql
1.
2.
3.
4.
5.
6.
    (SID_DESC=
      (SID_NAME=QBINVHUB)
      (ORACLE_HOME=/sandbox/oracle/product/11.2.0)
      (ENVS="LD_LIBRARY_PATH=/sandbox/oracle/product/11.2.0/lib:/sandbox/apps/easysoft/lib:/sandbox/apps/easysoft/unixODBC/lib:/sandbox/apps/easysoft/sqlserver,ODBCSYSINI=/sandbox/apps/odbc,EASYSOFT_ROOT=/sandbox/apps/easysoft")
      (PROGRAM=dg4odbc)
    )



Читай доку по freetds на предмет listener/envs.

SY.
...
Рейтинг: 0 / 0
12.06.2013, 16:44
    #38295212
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
SY,

Проверила выборку в isql, все ок выдает имя базы.

Добавила LD_LIBRARY_PATH дописала нужные пути ко всем библиотекам и hs и odbc и freetds.
Ошибка та же.

Мне не принципиально, через что подключаться главное результат. Попробую EasySoft.
...
Рейтинг: 0 / 0
12.06.2013, 16:47
    #38295213
Dblink Oracle к MS SQL
А задача какая?
чего хотите достичь?
...
Рейтинг: 0 / 0
12.06.2013, 16:48
    #38295215
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
tanyshkaМне не принципиально, через что подключаться главное результат. Попробую EasySoft.

EasySoft = $

SY.
...
Рейтинг: 0 / 0
12.06.2013, 16:52
    #38295220
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
tanyshkaОшибка та же.


Listener перезапустила? В ENVS нужно все что требуется isql. Попробуй unset все envimonment variables и добавлять пока не запустится isql. Это даст список того что надо засунуть в ENVS.

SY.
...
Рейтинг: 0 / 0
12.06.2013, 16:57
    #38295225
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
SY,

Я так понимаю данный продукт платный, может кто посоветует бесплатный драйвер.
...
Рейтинг: 0 / 0
12.06.2013, 17:08
    #38295231
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
совсем чайникА задача какая?
чего хотите достичь?

Хочу получить рабочий dblink с oracle на sql.
...
Рейтинг: 0 / 0
12.06.2013, 17:16
    #38295241
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
tanyshkaХочу получить рабочий dblink с oracle на sql.

Для чего?

Может оказаться, что лучше получить линк с MS SQL на Oracle или использовать GG...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2013, 17:17
    #38295242
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
А есть свободная рабочая станция или сервер с MS Win?
Можно HS agent поднять там, а конектитсься через него.

Ставишь там Oracle Server Software only
Базу не создаешь, поднимаешь только listener
Там настраиваешь агента и делаешь на эту машину DBLINK
c Linux
...
Рейтинг: 0 / 0
12.06.2013, 17:19
    #38295246
Dblink Oracle к MS SQL
tanyshkaсовсем чайникА задача какая?
чего хотите достичь?

Хочу получить рабочий dblink с oracle на sql.
ок. как решите проблему сможете мне чайнику рассказать как?

я делал наоборот через sql server. там очень просто, есть linked server.
устанавливал ораклового клиента, а далее в linked server выбирал параметры
для подключения.

почему я спросил про задачу, допустим что нужно вам что-то передавать из oracle в mssql.
не рассматриваете как вариант сохранять файлы, например xml, в папке ОС, а затем, например
через Integration services обрабатывать их и подкачивать в БД MS SQL.

поэтому я и спросил для чего вам это надо.

однако задачу прямого dblink из oracle в mssql я не решал, поэтому буду рад, если вы со мной
поделитесь её решением.
...
Рейтинг: 0 / 0
12.06.2013, 17:21
    #38295249
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
SYtanyshkaОшибка та же.


Listener перезапустила? В ENVS нужно все что требуется isql. Попробуй unset все envimonment variables и добавлять пока не запустится isql. Это даст список того что надо засунуть в ENVS.

SY.

Конечно перезапустила.
Удалила все переменные, запустила /usr/bin/isql -v mymssql пользователь пароль, отработало. Получается ему вообще не надо никаких переменных?
...
Рейтинг: 0 / 0
12.06.2013, 17:26
    #38295259
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
В обратную сторону все настроено, linked servers, проблем нет.
Предавать файлами не вариант.
Мне нужно онлайн получать информацию в оракл из ms sql, поэтому дб линк - единственное решение.
Настраивать на стороне ms sql не могу, не мой сервер, я получила только логин с него.
Если все таки найду решение, то конечно опишу детально.
...
Рейтинг: 0 / 0
12.06.2013, 18:58
    #38295324
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
[quot tanyshka]SYПолучается ему вообще не надо никаких переменных?

Сомневаюсь. Как минимум, он должен знать где лежит odbc.ini. Разве что c freetds он всегда должен быть в определеной директории. Еще момент, listener выполняется под unix id oracle, посему oracle должен иметь сответствующие привилегии на freetds.

SY.
...
Рейтинг: 0 / 0
13.06.2013, 01:47
    #38295549
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
tanyshkalistener.ora

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
TEST =
  (ADDRESS_LIST =
        (ADDRESS= (PROTOCOL= IPC)(KEY= EXTPROCPROD))
        (ADDRESS= (PROTOCOL= TCP)(Host= test.domain )(Port= 1521))
  )

SID_LIST_TEST =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME= %ORACLE_HOME%)
      (SID_NAME = TEST)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = %ORACLE_HOME%)
      (PROGRAM = extproc)
     (SID_DESC =
      (SID_NAME = mymssql)
      (ORACLE_HOME = %ORACLE_HOME%)
      (PROGRAM = hsodbc )
     )
    )
  )


Файлик именно в таком виде?
Как минимум скобки... SID_DESC внутри SID_DESC естественно, никак не опознается
Не говоря уж об %ORACLE_HOME%
...
Рейтинг: 0 / 0
13.06.2013, 09:47
    #38295694
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
Вячеслав Любомудров,

В файле %ORACLE_HOME% -естественно реальный путь.
Не поняла про скобки, я где-то их пропустила?
...
Рейтинг: 0 / 0
13.06.2013, 09:54
    #38295702
Digit_ALL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
как то так попробуйте:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
TEST =
(ADDRESS_LIST =
    (ADDRESS= (PROTOCOL= IPC)(KEY= EXTPROCPROD))
    (ADDRESS= (PROTOCOL= TCP)(Host= test.domain )(Port= 1521))
)
SID_LIST_TEST =
(SID_LIST =
    (SID_DESC =
        (ORACLE_HOME= %ORACLE_HOME%)
        (SID_NAME = TEST)
    )
    (SID_DESC =
        (SID_NAME = PLSExtProc)
        (ORACLE_HOME = %ORACLE_HOME%)
        (PROGRAM = extproc)
    )
    (SID_DESC =
        (SID_NAME = mymssql)
        (ORACLE_HOME = %ORACLE_HOME%)
        (PROGRAM = hsodbc )
    )
)
...
Рейтинг: 0 / 0
13.06.2013, 09:55
    #38295705
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
SY,

Про oracle пользователя я помню, поэтому под ним и проверяла.
Я на файлы freetds сделала права 777. У меня библиотеки freetds и odbc лежат в /usr/local/lib/ и /usr/lib их и прописала в LD_LIBRARY_PATH
...
Рейтинг: 0 / 0
13.06.2013, 13:14
    #38296119
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
Digit_ALL,

Точно скобку не там закрыла.
Вообщем решение где-то рядом, теперь ошибка ORA-12154.
...
Рейтинг: 0 / 0
13.06.2013, 14:22
    #38296251
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
Ура, получилось.

Создала линк таким образом:
CREATE PUBLIC DATABASE LINK "test"
CONNECT TO TEST
IDENTIFIED BY <PWD>
USING '(DESCRIPTION = (ADDRESS = (protocol=tcp)(host=test)(port=1521)) (connect_data = (sid=mymssql)) (HS=OK))';

Connection : Successful

Потом еще была трабла с соединением добавила:

1. Set INBOUND_CONNECT_TIMEOUT_<listener_name>=0 in listener.ora
2. Set SQLNET.INBOUND_CONNECT_TIMEOUT=0 in sqlnet.ora

Итого, ошибка была в скобке в listener.ora и dblink, почему то не захотел использовать имя из tnsnames.ora

И еще может кому пригодится, имя таблицы д.б. в кавычках по другому у меня не работает:
SELECT * from "dbo.table_test"@test

Спасибо всем за помощь!
...
Рейтинг: 0 / 0
04.07.2013, 18:01
    #38321007
tanyshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Dblink Oracle к MS SQL
Dblink настроила, работает.

Да вот только странно он работает, например, выбираю из таблицы
Код: sql
1.
select * from "table"@test


Возвращает 5ть колонок из 7ми

Если обратиться к тому столбцу, который он не показывает
Код: sql
1.
2.
select "col3"  from "table"@test
ORA-00904: "col3": недопустимый идентификатор



На металинке говорят, что это баг 11ой версии, но у меня 10g.

The ORA-00904 can be caused when a character length does not match between starting and receiving databases.
http://www.dba-oracle.com/t_ora_00904_select_nvarchar_sql_server.htm
Решение не помогло.

Может у Вас есть идеи?
Проблема, скорее всего, связана с текстовыми типами данных (тип столбца, который не отображаеться nvarchar)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Dblink Oracle к MS SQL / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]