powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBLINK to MSSQL не работает
7 сообщений из 7, страница 1 из 1
DBLINK to MSSQL не работает
    #40086533
derevyankoal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Тема вроде избитая и мануалов полно, но что-то не получается достучаться с Oracle к MS SQL
Исходные данные:
Oracle 19c на Red Hat 8.3
MS SQL 2016 на винде.

Порядок действий:
Установил Microsoft ODBC Driver for SQL Server для Linux.
Настроил odbcinst.ini
Код: html
1.
2.
3.
4.
[MSODBC]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.2.1
UsageCount=1


Настроил odbc.ini
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[ODBC Data Sources]
ABSQL = MSSQL Server
[ABSQL]
Driver = MSODBC
Description = MSSQL Server
Trace = No
Server = 192.168.20.100
Database = ABDB
Port = 1433
QuotedId=YES
AnsiNPW=YES


Проверка ODBC через isql прекрасно проходит, данные получаю.
Теперь Оракловая часть:
Настройка Heterogeneous Services:
Код: html
1.
2.
3.
4.
5.
HS_FDS_CONNECT_INFO = ABSQL
HS_FDS_TRACE_LEVEL = OFF 
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
set ODBCINI=/etc/odbc.ini
HS_KEEP_REMOTE_COLUMN_SIZE = LOCAL


listener.ora
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
# listener.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER 
  (SID_LIST =
    (SID_DESC = 
      (SID_NAME = ORCL)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )
    (SID_DESC =
      (SID_NAME = ABSQL)
      (PROGRAM = dg4odbc)
        (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.201)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )


tnsnames.ora
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.201)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

ABSQL =
  (DESCRIPTION=
     (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.201)(PORT=1521))
     (CONNECT_DATA = 
	   (SID = ABSQL)
	 )
     (HS=OK)
  )  


sqlnet.ora
Код: plsql
1.
2.
3.
4.
# sqlnet.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)


tnsping ABSQL OK

Создаю DBLINK
Код: plsql
1.
2.
3.
CREATE DATABASE LINK ABSQL
   CONNECT TO orausr IDENTIFIED BY "P@ssW0rd"
   USING 'ABSQL';


При попытке получить данные через dblink получаю ошибку:
Код: plsql
1.
2.
3.
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 12564
ORA-02063: preceding 2 lines from ABSQL


В alert_log приблизительно то же самое
Код: plsql
1.
2.
HS:  Unable to establish RPC connection to HS Agent...
HS:  ... Agent SID = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.201)(PORT=1521))(CONNECT_DATA=(SID=ABSQL))), NCR error = 12564 Unable to retrieve text of NETWORK/NCR message 12564


Может кто сталкивался с подобной ситуацией, или подскажет, что не так я сделал. Буду благодарен любым советам.
...
Рейтинг: 0 / 0
DBLINK to MSSQL не работает
    #40086544
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoal,

Код: plsql
1.
2.
3.
4.
5.
$ oerr ora 12564
12564, 00000, "TNS:connection refused"
// *Cause: The connect request was denied by the remote user (or TNS software).
// *Action: Not normally visible to the user.  For further details, turn on
// tracing and reexecute the operation.



1) HS parameter file у Вас такой (casesensitive)?
Код: plsql
1.
$ORACLE_HOME/hs/admin/initABSQL.ora



2) Проверка все ли нужные библиотеки для работа ODBC у Вас видны (из под oracle с установленными переменными окружения):

Код: plsql
1.
2.
$ ldd /usr/lib64/libodbc.so 
$ ldd /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.2.1



Если не видит какой библиотеки, нужно добавить директорию с библиотекой в LD_LIBRARY_PATH в listener.ora
Код: plsql
1.
2.
3.
4.
...
      (PROGRAM = dg4odbc)
      (ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/opt/oracle/product/19c/dbhome_1/lib)
...


3) Для 64 бит, я обычно устанавливаю в initABSQL.ora:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
#--HS_FDS_TRACE_LEVEL=DEBUG
#--HS_LANGUAGE = AMERICAN_AMERICA.UTF8
HS_FDS_SQLLEN_INTERPRETATION=64
HS_FDS_FETCH_ROWS=1
HS_FDS_SUPPORT_STATISTICS = FALSE
HS_KEEP_REMOTE_COLUMN_SIZE = LOCAL
HS_NLS_LENGTH_SEMANTICS = CHAR
HS_NLS_NCHAR = UCS2 



Чтобы далее двигаться, нужно включать HS_FDS_TRACE_LEVEL=debug и смотреть trace
Код: plsql
1.
2.
$ORACLE_HOME/hs/trace 
$ORACLE_HOME/hs/log 
...
Рейтинг: 0 / 0
DBLINK to MSSQL не работает
    #40086635
derevyankoal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim Lejnin,

Спасибо за подсказки, все оказалось очень просто. Если застрял, то нужно все отложить в сторону на полчаса , а потом пересмотреть конфиги. Потерял символ "=" в listener.ora
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
# listener.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER [color=red] = [/color]
  (SID_LIST =
    (SID_DESC = 
      (SID_NAME = ORCL)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )
    (SID_DESC =
      (SID_NAME = ABSQL)
      (PROGRAM = dg4odbc)
        (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.201)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )


Правда теперь появилась другая проблема, не возвращает все данные в запросе, отваливается с ошибкой.Т.е в таблице 500 строк, запрос
Код: plsql
1.
select * from table@ABSQL


возвращает 100 или 150 строк, а потом вываливается с ошибкой
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
ERROR:
ORA-28511: lost RPC connection to heterogeneous remote agent using
SID=ORA-28511: lost RPC connection to heterogeneous remote agent using
SID=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.201)(PORT=1521))(CO
NNECT_DATA=(SID=ABSQL)))
ORA-02063: preceding line from ABSQL
Process ID: 799692
Session ID: 318 Serial number: 45271


Но это уже другая проблема, будем гуглить.
...
Рейтинг: 0 / 0
DBLINK to MSSQL не работает
    #40086667
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрите типы данных в таблице, пробуйте выбирать не *, а определенные столбцы.

Кроме того, в HS есть настройки, какими кусками вынимаются данные из сторонней БД, см. журналы с level = наверное 3-5.
...
Рейтинг: 0 / 0
DBLINK to MSSQL не работает
    #40086678
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoal,

Попробуй

HS_FDS_FETCH_ROWS=1
...
Рейтинг: 0 / 0
DBLINK to MSSQL не работает
    #40086692
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
derevyankoal,

Попробуйте FreeTDS вместо драйвера от MS, работает у меня уже лет 5 - проблем не замечено
...
Рейтинг: 0 / 0
DBLINK to MSSQL не работает
    #40086745
derevyankoal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,

BLOB поля были в таблице, если их не тащить, то все ОК.
Спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DBLINK to MSSQL не работает
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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