Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
Знаю что тема много раз поднималась, весь форум уже перерыл и инет в том числе.
Имеем unixODBC freetds oracle 11 solaris 10 mssql 2008

-bash-3.2# cat /etc/odbcinst.ini
[FreeTDS]
Driver=/usr/local/lib/libtdsodbc.so
client charset=utf-8
UsageCount=23

-bash-3.2# cat /etc/odbc.ini
[MyMSSQL]
Driver=FreeTDS
Servername=MyMSSQL
TDS_Version=8.0
Database=BPMonline
UID=IBSOUser
PWD=IBSOUser
CHARSET=utf8

-bash-3.2# cat /usr/local/etc/freetds.conf
[MyMSSQL]
host = srv-mssql
port = 1433
tds version = 8.0
client charset = UTF-8
dump file = /tmp/freetds.log
dump file append = yes

-bash-3.2# isql -v MyMSSQL IBSOUser IBSOUser
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select count(*) from contact;
+------------+
| |
+------------+
| 43 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL>


до этого все как бы хорошо

а вот oracle подключаться никак не хочет:

-bash-3.2# cat /u/app/oracle/product/11.2.0/db_1/hs/admin/initMyMSSQL.ora
HS_FDS_CONNECT_INFO=MyMSSQL
HS_FDS_SHAREABLE_NAME = /usr/local/lib/libtdsodbc.so
HS_FDS_TRACE_LEVEL=255
set ODBCINI = /etc/odbc.ini
set ODBCINSTINI = /etc/odbcinst.ini
#HS_LANGUAGE=AMERICAN_AMERICA.UTF8
HS_LANGUAGE=RUSSIAN_RUSIA.UTF8
#HS_FDS_SQLLEN_INTERPRETATION=32


-bash-3.2# cat /u/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
HS =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host= 192.168.2.47 )(Port= 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROCHS))
)
SID_LIST_HS =
(SID_LIST =
(SID_DESC =
(PROGRAM=dg4odbc)
(SID_NAME = MyMSSQL)
(ORACLE_HOME = /u/app/oracle/product/11.2.0/db_1/)
(ENVS="LD_LIBRARY_PATH=/u/app/oracle/product/11.2.0/db_1/lib:/usr/lib:/usr/local/lib/sparcv9/:/usr/local/lib:/usr/openwin/lib:/usr/dt/lib")
)
)
CONNECT_TIMEOUT_HS = 10
INBOUND_CONNECT_TIMEOUT_HS = 0
STARTUP_WAIT_TIME_HS = 0


sun04.oracle> tnsping MyMSSQL

TNS Ping Utility for Solaris: Version 11.2.0.3.0 - Production on 19-JUL-2014 12:19:27

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

Used parameter files:
/u/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.47)(PORT = 1522)) (CONNECT_DATA = (SID = MyMSSQL) (SERVICE_NAME = MyMSSQL)) (HS = OK))
OK (10 msec)


При попытке сделать заброс из дблинка получаем:
SQL> select count(*) from "Contact"@dl_terrasoft;
select count(*) from "Contact"@dl_terrasoft
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
ORA-02063: preceding line from DL_TERRASOFT

Кусок трассировки:

Exiting hgolofns at 2014/07/19-10:51:22
Failed to load ODBC library symbol: /usr/local/lib/libtdsodbc.so(SQLDescribeParam)
Exiting hgolofn, rc=28500 at 2014/07/19-10:51:22
Exiting hgoinit, rc=28500 with error ptr FILE:hgoinit.c LINE:420 ID:Loading ODBC aray of function ptrs
hostmstr: 61480960: HOA After hoainit
RPC Calling nscontrol(0), rc=0
hostmstr: 61497344: RPC Before Exit Agent
hostmstr: 61513728: HOA Before hoaexit
Entered hgoexit
HS Gateway: NULL connection context at exit
Exiting hgoexit, rc=0 with error ptr FILE:hgoexit.c LINE:110 ID:Connection context
hostmstr: 61530112: HOA After hoaexit
hostmstr: 61546496: RPC After Exit Agent


тут вроде все красиво:

sun04.oracle> file "/usr/local/lib/libtdsodbc.so"
/usr/local/lib/libtdsodbc.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped, no debugging information available
sun04.oracle> ldd "/usr/local/lib/libtdsodbc.so"
libodbcinst.so.2 => /usr/local/lib/libodbcinst.so.2
libthread.so.1 => /lib/64/libthread.so.1
libnsl.so.1 => /lib/64/libnsl.so.1
libsocket.so.1 => /lib/64/libsocket.so.1
libc.so.1 => /lib/64/libc.so.1
libgcc_s.so.1 => /usr/local/lib/sparcv9//libgcc_s.so.1
libmp.so.2 => /lib/64/libmp.so.2
libmd.so.1 => /lib/64/libmd.so.1
libscf.so.1 => /lib/64/libscf.so.1
libdoor.so.1 => /lib/64/libdoor.so.1
libuutil.so.1 => /lib/64/libuutil.so.1
libgen.so.1 => /lib/64/libgen.so.1
libm.so.2 => /lib/64/libm.so.2
/lib/sparcv9/../libm/sparcv9/libm_hwcap1.so.2
/platform/sun4v/lib/sparcv9/libc_psr.so.1
/platform/sun4v/lib/sparcv9/libmd_psr.so.1
sun04.oracle>

sun04.oracle> file /u/app/oracle/product/11.2.0/db_1/bin/dg4odbc
/u/app/oracle/product/11.2.0/db_1/bin/dg4odbc: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped



перепробовал несколько версий freetds и unixODBC эффекта нет
Раньше уже встречал подобную проблему на linux там решалось установкой других вариантов ODBC. На солярке для подключения к mssql не знаю что можно еще использовать кроме freetds.
19 июл 14, 12:31    [16329176]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49523

SuperMultik
HS_FDS_SHAREABLE_NAME = /usr/local/lib/libtdsodbc.so

Здесь лучше указывать не непосредственно драйвер, а ODBC Manager, который способен
согласовать версии интерфейса драйвера и приложения. Пиши тут libodbc.so.

Posted via ActualForum NNTP Server 1.5

19 июл 14, 12:45    [16329192]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
При таком варианте не силльно лучше получается

SQL> select count(*) from "Contact"@dl_terrasoft;
select count(*) from "Contact"@dl_terrasoft
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[unixODBC][Driver Manager]Data source name not found, and no default driver
specified {IM002}
ORA-02063: preceding 2 lines from DL_TERRASOFT


SQL>


Exiting hgogenconstr, rc=0 at 2014/07/19-13:09:17
Entered hgopoer at 2014/07/19-13:09:17
hgopoer, line 231: got native error 0 and sqlstate IM002; message follows...
[unixODBC][Driver Manager]Data source name not found, and no default driver specified {IM002}
Exiting hgopoer, rc=0 at 2014/07/19-13:09:17
hgocont, line 2754: calling SqlDriverConnect got sqlstate IM002
Exiting hgocont, rc=28500 at 2014/07/19-13:09:17 with error ptr FILE:hgocont.c LINE:2774 ID:Something other than invalid authorization
Exiting hgolgon, rc=28500 at 2014/07/19-13:09:17 with error ptr FILE:hgolgon.c LINE:801 ID:Calling hgocont
19 июл 14, 13:10    [16329218]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
sun04.oracle> cat /u/app/oracle/product/11.2.0/db_1/hs/admin/initMyMSSQL.ora
HS_FDS_CONNECT_INFO=MyMSSQL
#HS_FDS_SHAREABLE_NAME = /usr/local/lib/libtdsodbc.so
HS_FDS_SHAREABLE_NAME = /usr/local/lib/libodbc.so
HS_FDS_TRACE_LEVEL=255
set ODBCINI = /etc/odbc.ini
set ODBCINSTINI = /etc/odbcinst.ini
#HS_LANGUAGE=AMERICAN_AMERICA.UTF8
HS_LANGUAGE=RUSSIAN_RUSIA.UTF8
#HS_FDS_SQLLEN_INTERPRETATION=32
19 июл 14, 13:11    [16329219]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49523

SuperMultik
Data source name not found

Ну, не находит он DSN с каким-то именем. Врубай трассировку ODBC если таковая есть и
смотри какое имя от него Оракул хочет.

Posted via ActualForum NNTP Server 1.5

19 июл 14, 13:51    [16329261]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9815
SuperMultik
При таком варианте не сильно лучше получается


Я использую unix ODBC oт EasySoft, но сути это не меняет. В listener ENVS кроме ODBC библиотек надо еще прописывать environment variables для ODBC. В моем случае:

ENVS="LD_LIBRARY_PATH=/himhqa02/oracle/product/11.1.0/lib:/himhqa02/apps/easysoft/lib:/himhqa02/apps/easysoft/unixODBC/lib:/himhqa02/apps/easysoft/sqlserver,ODBCSYSINI=/himhqa02/apps/odbc,EASYSOFT_ROOT=/himhqa02/apps/easysoft"

SY.

Сообщение было отредактировано: 19 июл 14, 21:22
19 июл 14, 17:12    [16329597]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
ну да не находит DSN он именно с libodbc.so

трассировка ODBC вроде как включена только файл создается исключительно при пользовании isql, при запросах через dg4odbc в лог ничего не пишется.

поставил ODBCSYSINI, изменений никаких.
19 июл 14, 21:26    [16330009]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9815
SuperMultik,

ODBSSYSINI и EASYSOFT_ROOT это у EasySoft ODBC for Unix а какие у unixODBC freetds это ты и должен выяснить.

SY.
19 июл 14, 21:31    [16330014]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49523

SuperMultik
при запросах через dg4odbc в лог ничего не пишется.

Значит он работает от такой учётки или с такими переменными окружения, что не может найти
твой odbc.ini.

Posted via ActualForum NNTP Server 1.5

19 июл 14, 21:52    [16330041]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49523

https://community.oracle.com/thread/2221685?tstart=0

Posted via ActualForum NNTP Server 1.5

19 июл 14, 21:59    [16330059]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
не понятно почему не находит в initMyMSSQL.ora четко же прописано
set ODBCINI=/etc/odbc.ini
set ODBCINSTINI=/etc/odbcinst.ini

и если ставить библиотеку
libtdsodbc.so
то вроде как находит

ну и еще до кучи в .profile
прописано
export ODBCSYSINI=/etc
export ODBCINI=/etc/odbc.ini

тут тоже добавил
sun04.oracle> cat /u/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
HS =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host= 192.168.2.47 )(Port= 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROCHS))
)
SID_LIST_HS =
(SID_LIST =
(SID_DESC =
(PROGRAM=dg4odbc)
(SID_NAME = MyMSSQL)
(ORACLE_HOME = /u/app/oracle/product/11.2.0/db_1/)
(ENVS="LD_LIBRARY_PATH=/u/app/oracle/product/11.2.0/db_1/lib:/usr/lib:/usr/local/lib/sparcv9/:/usr/local/lib:/usr/openwin/lib:/usr/dt/lib,ODBCSYSINI=/etc,ODBCINI=/etc/odbc.ini,ODBCINSTINI=/etc/odbcinst.ini")
)
)
CONNECT_TIMEOUT_HS = 10
INBOUND_CONNECT_TIMEOUT_HS = 0
STARTUP_WAIT_TIME_HS = 0


эффекта никакого нет

SQL> select count(*) from "Contact"@dl_terrasoft;
select count(*) from "Contact"@dl_terrasoft
*
ERROR at line 1:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[unixODBC][Driver Manager]Data source name not found, and no default driver
specified {IM002}
ORA-02063: preceding 2 lines from DL_TERRASOFT
20 июл 14, 08:50    [16330689]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
с библиотекой тоде все нормально вроде
sun04.oracle> file /usr/local/lib/libodbc.so
/usr/local/lib/libodbc.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped, no debugging information available
sun04.oracle> ldd /usr/local/lib/libodbc.so
libthread.so.1 => /lib/64/libthread.so.1
libc.so.1 => /lib/64/libc.so.1
libgcc_s.so.1 => /usr/local/lib/sparcv9//libgcc_s.so.1
libm.so.2 => /lib/64/libm.so.2
/lib/sparcv9/../libm/sparcv9/libm_hwcap1.so.2
/platform/sun4v/lib/sparcv9/libc_psr.so.1

что то с strace ничего не выходит, файл лога не создается

-bash-3.2# ps -Af |grep hs
oracle 1845 1 0 Jul 19 ? 0:01 /u/app/oracle/product/11.2.0/db_1/bin/tnslsnr hs -inherit

-bash-3.2# strace -fae -o /tmp/dg4odbc.log -p 1845

что не так делаю?
20 июл 14, 09:12    [16330713]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49523

1) Какой разрядности у тебя Oracle?
2) ls -l /etc/odbc.ini

Posted via ActualForum NNTP Server 1.5

20 июл 14, 11:50    [16330967]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
sun04.oracle> uname -a
SunOS sun04 5.10 Generic_147440-19 sun4v sparc sun4v


Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production


-bash-3.2# ls -l /etc/odbc.ini
-rw-rw-r-- 1 root root 119 Jul 19 09:29 /etc/odbc.ini
20 июл 14, 13:02    [16331066]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
в общем проблему решил
в солярке аналог strace
truss -fae -o /tmp/dg4odbc.log -p 1845

проблема была вот в чем:

19532/1: open("/etc//etc/odbcinst.ini", O_RDONLY) Err#2 ENOENT
19532/1: open("/etc//etc/odbcinst.ini", O_RDWR|O_CREAT|O_TRUNC, 0666) Err#2 ENOENT
19532/1: time() = 1406111184
19532/1: open("/etc//etc/odbcinst.ini", O_RDONLY) Err#2 ENOENT
19532/1: open("/etc//etc/odbcinst.ini", O_RDWR|O_CREAT|O_TRUNC, 0666) Err#2 ENOENT
23 июл 14, 14:38    [16347013]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
Наткнулся еще на одну проблему:

SQL> select "Name" from "Contact"@dl_terrasoft limit 10;
select "Name" from "Contact"@dl_terrasoft limit 10
*
ERROR at line 1:
ORA-00933: SQL command not properly ended


SQL> select "Name" from "Contact"@dl_terrasoft;
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.2.47)(PORT=1522))(CONNECT_
DATA=(SID=MyMSSQL)(SERVICE_NAME=MyMSSQL)))
ORA-02063: preceding line from DL_TERRASOFT
Process ID: 1469
Session ID: 449 Serial number: 51117



no rows selected


при этом
SQL> select count(*) from "Contact"@dl_terrasoft;

COUNT(*)
----------
45


никаких фаерволов между серверами нет

sun04.oracle> cat /u/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
CONNECT_TIMEOUT_LISTENER = 10
INBOUND_CONNECT_TIMEOUT_LISTENER = 0
STARTUP_WAIT_TIME_LISTENER = 0

HS =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host= 192.168.2.47 )(Port= 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROCHS))
)

SID_LIST_HS =
(SID_LIST =
(SID_DESC =
(PROGRAM=dg4odbc)
(SID_NAME = MyMSSQL)
(ORACLE_HOME = /u/app/oracle/product/11.2.0/db_1/)
(ENVS="LD_LIBRARY_PATH=/u/app/oracle/product/11.2.0/db_1/lib:/usr/lib:/usr/local/lib/sparcv9/:/usr/local/lib:/usr/openwin/lib:/usr/dt/lib,ODBCSYSINI=/etc,ODBCINI=/etc/odbc.ini,ODBCINSTINI=/etc/odbcinst.ini")
)
)

SAVE_CONFIG_ON_STOP_LISTENER = TRUE
TRACE_LEVEL_LISTENER = OFF
DIRECT_HANDOFF_TTC_LISTENER=OFF
USE_CKPFILE_LISTENER = OFF

может кто сталкивался с похожей проблемой?
трейс прикрепил в файле

К сообщению приложен файл (MyMSSQL_agt_6465.trc - 64Kb) cкачать
25 июл 14, 21:28    [16359731]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
извиняюсь конечно же:
CONNECT_TIMEOUT_HS = 10
INBOUND_CONNECT_TIMEOUT_HS = 0
STARTUP_WAIT_TIME_HS = 0

HS =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL= TCP)(Host= 192.168.2.47 )(Port= 1522))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROCHS))
)

SID_LIST_HS =
(SID_LIST =
(SID_DESC =
(PROGRAM=dg4odbc)
(SID_NAME = MyMSSQL)
(ORACLE_HOME = /u/app/oracle/product/11.2.0/db_1/)
(ENVS="LD_LIBRARY_PATH=/u/app/oracle/product/11.2.0/db_1/lib:/usr/lib:/usr/local/lib/sparcv9/:/usr/local/lib:/usr/openwin/lib:/usr/dt/lib,ODBCSYSINI=/etc,ODBCI
NI=/etc/odbc.ini,ODBCINSTINI=/etc/odbcinst.ini")
)
)

SAVE_CONFIG_ON_STOP_HS = TRUE
TRACE_LEVEL_HS = OFF
DIRECT_HANDOFF_TTC_HS=OFF
USE_CKPFILE_HS = OFF


но это к сожалению никак не повлияло на результат
25 июл 14, 21:41    [16359784]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
мне помогло
HS_FDS_SUPPORT_STATISTICS = FALSE
25 июл 14, 21:50    [16359822]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
SuperMultik
Member

Откуда: Москва
Сообщений: 53
предыдущий параметр был ни при чем решилось все так:
HS_FDS_FETCH_ROWS=1
25 июл 14, 22:00    [16359846]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
Здравствуйте, помогите решить ту же проблему. Понял, что самому уже не разобраться.
Есть Oracle под Linux 11.2.0.4 нужен DBLINK с MSSQL2012
Всё по инструкции
Драйвера и freetds и Microsoft ODBC Driver for SQL Server
cat /etc/odbc.ini

[MSSQLDSN]
Description = MSSQL SERVER
Driver = FreeTDS
;Driver = MSSQL17
Trace = No
Servername = MEDSQL
Database = MYDB
Port = 1433
;TDS version = 1

[MSSQLDSN2]
Description = MSSQL SERVER
Driver = MSSQL17
Trace = No
Server = tcp:mssql.dom ,1433
Database = MYDB


Оба варианта работают.
#isql -v MSSQLDSN
#isql -v MSSQLDSN2

Дохожу до создания DBLINK
cat $ORACLE_HOME/HS/admin/initMSSQL.ora
HS_FDS_CONNECT_INFO = MSSQLDSN
HS_FDS_TRACE_LEVEL = 0
#HS_FDS_TRACE_FILE_NAME = /tmp/dg4odbc.trc
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
set ODBCINI = /etc/odbc.ini
set ODBCINSTINI = /etc/odbcinst.ini

listneter.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/base/product)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = MSSQL)
(ORACLE_HOME = /oracle/base/product)
(PROGRAM = dg4odbc)
(ENVS=LD_LIBRARY_PATH = /oracle/base/product/lib:/lib64:/usr/lib64:/lib:/usr/lib:/etc/freetds/lib)
)
)

tnsnames.ora
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA = (SID = MSSQL))
(HS = OK)
)

SQL> create database link HSLINK connect to "user" identified by "password" using 'TEST';

При тесте получаю вышеупомянутую в этой теме ошибку
ORA-28500: соединение ORACLE с посторонней системой выдало сообщение: [unixODBC][Driver Manager]Data source name {I} ORA-02063: предшествующий 2 lines из HSLINK

Я так понимаю, что под oracle он не может обнаружить ODBC драйвера?
При этом под пользователем oracle работает
#isql -v MSSQLDSN
#isql -v MSSQLDSN2

[oracle@host ~]$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/oracle/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

Я уже честно говоря за неделю запутался совсем, нужен взгляд со стороны.
Спасибо.
26 мар 20, 09:53    [22106143]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1411
Давно уже не настраивал, могу ошибаться, но

(SID_NAME = MSSQL)


это должно быть имя ODBC-соединения.

[MSSQLDSN]
26 мар 20, 10:09    [22106153]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
dmdmdm,

Первоначально так и было
listener (SID_NAME = MSSQLDSN)
tnsnames (CONNECT_DATA = (SID = MSSQLDSN))

Результат тот же.
файл в hs/admin и initMSSQLDSN.ora и initMSSQL.ora
уже столько вариантов перепробовал, поэтому показал финальный
26 мар 20, 10:22    [22106158]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18275
Я забил на общесистемные настройки FreeTDS и прописал локальные в $ORACLE_HOME/hs/admin/
initmssql1c.ora
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = mssql1c
HS_FDS_TRACE_LEVEL = 0
HS_FDS_SHAREABLE_NAME = /usr/lib/64/libodbc.so

HS_KEEP_REMOTE_COLUMN_SIZE = LOCAL
HS_NLS_NCHAR=UCS2
#HS_LANGUAGE=AMERICAN_AMERICA.CL8MSWIN1251
HS_FDS_REMOTE_DB_CHARSET=CL8MSWIN1251

#
# ODBC specific environment variables
#
set ODBCINI=/u/app/oracle/product/ora11gr2/hs/admin/odbc.ini


#
# Environment variables required for the non-Oracle system
#
set LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/64

odbc.ini
[mssql1c]
Driver = /usr/local/lib/libtdsodbc.so
Database = ...
DESCRIPTION = MS SQL 1C Database
SERVER = ...
PORT = 1433
#UID =
#PASSWORD =
26 мар 20, 10:40    [22106163]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
не совсем понятно в чём же была проблема выше и как решилась

SuperMultik,

в общем проблему решил
в солярке аналог strace
truss -fae -o /tmp/dg4odbc.log -p 1845

проблема была вот в чем:

19532/1: open("/etc//etc/odbcinst.ini", O_RDONLY) Err#2 ENOENT
19532/1: open("/etc//etc/odbcinst.ini", O_RDWR|O_CREAT|O_TRUNC, 0666) Err#2 ENOENT
19532/1: time() = 1406111184
19532/1: open("/etc//etc/odbcinst.ini", O_RDONLY) Err#2 ENOENT
19532/1: open("/etc//etc/odbcinst.ini", O_RDWR|O_CREAT|O_TRUNC, 0666) Err#2 ENOENT
26 мар 20, 10:43    [22106166]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
SuperMultik,


-bash-3.2# cat /etc/odbc.ini
[MyMSSQL]
Driver=FreeTDS
Servername=MyMSSQL <- заменить на TDSMSSQL
TDS_Version=8.0
Database=BPMonline
UID=IBSOUser
PWD=IBSOUser
CHARSET=utf8

-bash-3.2# cat /usr/local/etc/freetds.conf
[MyMSSQL] <- попробовать заменить на TDSMSSQL
host = srv-mssql
port = 1433
tds version = 8.0
26 мар 20, 10:48    [22106172]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
Вячеслав Любомудров,

cat $ORACLE_HOME/hs/admin/initMSSQLDSN.ora

HS_FDS_CONNECT_INFO = MSSQLDSN
HS_FDS_TRACE_LEVEL = 0
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
set ODBCINI = /oracle/base/product/hs/admin/odbc.ini
set ODBCINSTINI = /oracle/base/product/hs/admin/odbcinst.ini
set LD_LIBRARY_PATH=/oracle/base/product/lib:/lib:/usr/lib:/usr/lib64:/etc/freetds:/etc/freetds/lib

С тем же результатом, как драйверов не видит..
26 мар 20, 10:50    [22106174]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
SuperMultik,


SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
....
(PROGRAM=dg4odbc) используем ODBC гетерогенный доступ
(ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/xe)
)
(SID_DESC=
(SID_NAME=MyMSSQL)
....
(PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/xe)
)
)



/usr/local/lib - путь до библиотек freetds и odbc
26 мар 20, 10:56    [22106178]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
el_andr

set LD_LIBRARY_PATH=/oracle/base/product/lib:/lib:/usr/lib:/usr/lib64:/etc/freetds:/etc/freetds/lib

С тем же результатом, как драйверов не видит..


Точно тут либы лежат?
26 мар 20, 10:58    [22106179]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
landy,

да, я ставил freetds в /etc/freetds
26 мар 20, 11:05    [22106189]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
-2-
Member

Откуда:
Сообщений: 15279
HS к mssql имеет смысл ставить на сервер с этим самым mssql. Или пользоваться кроссплатформенным jdbc - он не требует каких-то внешних настроек в ОС.
26 мар 20, 11:13    [22106195]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
el_andr
landy,

да, я ставил freetds в /etc/freetds


Ну как-то не туда - обычно в юнихах - /lib, /usr/lib, /usr/local/lib
/etc не для этого
26 мар 20, 11:16    [22106197]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
landy,

в данном случае по большому случаю без разницы, изначально и было в /usr/local/freetds , сейчас переставил обратно в /usr/local/...но без результата
26 мар 20, 11:47    [22106218]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
Должно быть примерно так
файл freetds.conf

[MSSQLTDS]
host = <ip srv тут>
port = 1433
tds version = 8.0 # в последней версии tds не нужно
client charset = UTF-8


файл odbc.ini

[MSSQLDSN2]
Driver = FreeTDS
Description = mssql
TDS_Version = 8.0
Trace = No
ServerName = MSSQLTDS
Port = 1433
Database = MYDB
UID = <login>
PWD = <пароль>

файл odbcinst.ini

[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/lib64/libodbc.so
UsageCount = 1

файл $ORACLE_HOME/hs/admin/initMSSQL

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = MSSQLDSN2
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
HS_FDS_SQLLEN_INTERPRETATION=64
HS_FDS_TRACE_LEVEL = off

HS_NLS_NCHAR=UCS2
HS_LANGUAGE = AMERICAN_AMERICA.CL8MSWIN1251

set ODBCINI=/etc/odbc.ini

tnsnames.ora

MSSQL =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = <ip or hostname Oracle DB SRV>)(PORT = 1521))
)
(CONNECT_DATA =
(SID = MSSQL)
)
(HS = OK)
)

listener.ora

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=sccm)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/xe)
)

(SID_DESC=
(SID_NAME=MSSQL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM=dg4odbc)
(ENVS=LD_LIBRARY_PATH=/usr/local/lib:/usr/lib64:/u01/app/oracle/product/11.2.0/<SID>)
)
)
26 мар 20, 12:50    [22106260]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
там .ora пропустил
файл init<имясервиса>.ora ( в нашем примере initMSSQL.ora - регистр MSSQL тот же, что в listener.ora)
26 мар 20, 12:55    [22106264]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
landy
Member

Откуда:
Сообщений: 1412
Компиляция freetds д б со след параметрами

./configure --prefix=/usr/local --with-tdsver=8.0 --with-unixodbc=/usr/
make
make install


Для послединих версий >=1 параметр --with-tdsver=8.0 не нужен
26 мар 20, 13:09    [22106278]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
landy
Должно быть примерно так

Спасибо!
Снёс всё, сделал по новой, заработало, где ошибся ради интереса буду искать.

P.S. Правда, после изменения в файле odbc.ini параметра Database, опять всё вернулось к первоначальной ошибке (????)
т.е. было Database=MYDB заменил на Database=MYDB2 и опять повалился до ошибки, вернул назад, но ошибка осталась.
26 мар 20, 16:38    [22106439]     Ответить | Цитировать Сообщить модератору
 Re: Гетероген oracle to mssql  [new]
el_andr
Member

Откуда:
Сообщений: 16
el_andr

P.S. Правда, после изменения в файле odbc.ini параметра Database, опять всё вернулось к первоначальной ошибке (????)
т.е. было Database=MYDB заменил на Database=MYDB2 и опять повалился до ошибки, вернул назад, но ошибка осталась.

Это я уже намудрил, работает всё.
Спасибо!
26 мар 20, 17:21    [22106466]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Oracle Ответить