powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Dblink Oracle к MS SQL
32 сообщений из 32, показаны все 2 страниц
Dblink Oracle к MS SQL
    #38294326
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Установила и настроила 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
Dblink Oracle к MS SQL
    #38294871
XCB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а odbc соединение отдельно открывается?
ps была какаято утилита для проверки из командной строки название запамятовал
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #38294872
Digit_ALL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В файле hsodbcsql.trc может быть подсказка.
Если такого нет, можно попробовать удалить параметр HS_FDS_TRACE_FILE_NAME = /tmp/hsodbcsql.trc, и поискать логи где-то тут: %ORACLE_HOME%/hs/log
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #38294881
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XCB,

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


Файл hsodbcsql.trc есть, но он пустой, сделала как Вы написали в %ORACLE_HOME%/hs/log тоже пусто.
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #38295175
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Dblink Oracle к MS SQL
    #38295212
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

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

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

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

EasySoft = $

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


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

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

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

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

Для чего?

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

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

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

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

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

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

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


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

SY.

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

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

SY.
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #38295549
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Dblink Oracle к MS SQL
    #38295694
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров,

В файле %ORACLE_HOME% -естественно реальный путь.
Не поняла про скобки, я где-то их пропустила?
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #38295702
Digit_ALL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как то так попробуйте:
Код: 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
Dblink Oracle к MS SQL
    #38295705
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

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

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

Создала линк таким образом:
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
Dblink Oracle к MS SQL
    #38321007
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Dblink Oracle к MS SQL
    #38367329
sa_viv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanyshka, подскажите у вас линукс 32 или 64 бит?
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #38368490
tanyshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sa_viv,
х32,
кстати, предыдущую проблему решили созданием вьюшек для таблиц с подходящим типом данных и преобразованием.

CAST(CAST(DESCRIPTION AS xml) AS varchar(255)) AS DESCR
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Dblink Oracle к MS SQL
    #39689281
gdi777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select отлично работает (select * from mstable@mslink;), а вот инсерт нет:(
insert into mstable@mslink select * from oratable

таблицы по структуре идентичны, ошибка:
Error report -
SQL Error: ORA-28500: соединение ORACLE с посторонней системой выдало сообщение:
[Oracle][ODBC SQL Server Wire Protocol driver][Microsoft SQL Server]Incorrect syntax near '@'. {HY000,NativeErr = 102}
ORA-02063: предшествующий 2 lines из mslink

оно вообще реализуемо?
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #39689294
kiri4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gdi777,
инсерт надо делать на стороне ms
insert into mstable (select * from oratable@oralink)
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #39689295
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте вместо * явные имена полей, причем начинайте с полей простых типов - number, char и т.п.
Между типами данных этих СУБД есть отличия, в некоторых случаях придется что-то конвертировать.
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #39689406
gdi777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdmПопробуйте вместо * явные имена полей, причем начинайте с полей простых типов - number, char и т.п.
Между типами данных этих СУБД есть отличия, в некоторых случаях придется что-то конвертировать.
попробовал - никак, не работает даже
insert into mstable@mslink select null as COLUMN1, null as COLUMN2 from oratable

и надо именно из оракла в таблицы мсскл делать вставки.

кстати вот это вполне себе работает
insert into mstable@mslink values ('значение1', 'значение2')
...
Рейтинг: 0 / 0
Dblink Oracle к MS SQL
    #39689423
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте PL/SQL.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Connected to Oracle Database 11g Release 11.2.0.1.0 
Connected as supermag@DBOFFICE

SQL> 
SQL> create synonym table1c for "dbo"."_Reference153"@DB1C;
create synonym table1c for "dbo"."_Reference153"@DB1C

ORA-00955: имя уже задействовано для существующего объекта
SQL> insert into table1c("_Fld2697RRef", "_Marked", "_Code", "_Fld2686", "_Description")
  2  select w.id_ware, w.closed, w.code, w.article, w.name
  3  from ware_1c w
  4  where rownum < 11;
insert into table1c("_Fld2697RRef", "_Marked", "_Code", "_Fld2686", "_Description")
select w.id_ware, w.closed, w.code, w.article, w.name
from ware_1c w
where rownum < 11

ORA-02025: все таблицы в этом предложении SQL должны находится в удаленной БД
SQL> begin
  2  insert into table1c("_Fld2697RRef", "_Marked", "_Code", "_Fld2686", "_Description")
  3  select w.id_ware, w.closed, w.code, w.article, w.name
  4  from ware_1c w
  5  where rownum < 11;
  6  end;
  7  /
begin
insert into table1c("_Fld2697RRef", "_Marked", "_Code", "_Fld2686", "_Description")
select w.id_ware, w.closed, w.code, w.article, w.name
from ware_1c w
where rownum < 11;
end;

ORA-06550: Строка 3, столбец 19:
PL/SQL: ORA-00932: несовместимые типы данных: ожидается BINARY, получено NUMBER
ORA-06550: Строка 2, столбец 1:
PL/SQL: SQL Statement ignored

SQL> 

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


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