Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подключение к другому компьютеру через DLL / 16 сообщений из 16, страница 1 из 1
18.11.2019, 12:53
    #39890407
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Добрый день!


Есть Oracle 11, надо настроить подключение к определенному порту другого компьютера через DLL.

DLL лежит в каталоге BIN, со стороны Oracle она запускается, но не может подключиться к определенному порту другого компьютера.

Написал тестовый exe, который запускает DLL, положил в папку BIN, все работает, но если запускать эту DLL из Oracle, то она выдает ошибку подключения в порту.

Какие надо сделать настройки, чтобы Oracle мог видеть порт другого компьютера?
...
Рейтинг: 0 / 0
18.11.2019, 14:03
    #39890463
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Попробовал подключиться через пакет UTL_TCP, получил ошибку

ORA-24247: отказ в доступе к сети в соответствии со списком контроля доступа (ACL)
ORA-06512: на "SYS.UTL_TCP", line 17
ORA-06512: на "SYS.UTL_TCP", line 267
ORA-06512: на "RB.PKG_ACTION", line 666
ORA-06512: на line 3
...
Рейтинг: 0 / 0
18.11.2019, 14:08
    #39890469
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Попробуй через UTL_SMTP, может пролезет
...
Рейтинг: 0 / 0
18.11.2019, 14:21
    #39890483
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Вячеслав Любомудров
Попробуй через UTL_SMTP, может пролезет


Не пролезло, точно такая же ошибка.
...
Рейтинг: 0 / 0
18.11.2019, 14:24
    #39890486
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Sergey_rb,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
24247. 00000 -  "network access denied by access control list (ACL)"
*Cause:    No access control list (ACL) has been assigned to the target
           host or the privilege necessary to access the target host has not
           been granted to the user in the access control list.
*Action:   Ensure that an access control list (ACL) has been assigned to
           the target host and the privilege necessary to access the target
           host has been granted to the user.
...
Рейтинг: 0 / 0
18.11.2019, 14:26
    #39890492
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Ну раз с наскоку не получилось можно попробовать почитать доку
https://docs.oracle.com/cd/B19306_01/install.102/e10319/extproc.htm
Но, это, конечно, если мы друг друга поняли
...
Рейтинг: 0 / 0
18.11.2019, 14:34
    #39890510
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Прогнал скрипты по ACL отсюда:
http://www.interface.ru/home.asp?artId=20274

Из Oracle коннект прошел, а через DLL без изменений.
...
Рейтинг: 0 / 0
18.11.2019, 14:38
    #39890515
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Вячеслав Любомудров
Ну раз с наскоку не получилось можно попробовать почитать доку
https://docs.oracle.com/cd/B19306_01/install.102/e10319/extproc.htm
Но, это, конечно, если мы друг друга поняли


Из настроек я менял только настройку листенера

Код: plsql
1.
ENVS = "EXTPROC_DLLS=ANY"



TNS_NAMES без изменений

SPIRE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = SPIRE)
)
)

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
...
Рейтинг: 0 / 0
19.11.2019, 15:03
    #39891134
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Возник еще один вопрос - функция, возвращающая VARCHAR2, возвращает только первый символ.

Объявление функции:
Код: plsql
1.
2.
3.
4.
5.
CREATE OR REPLACE FUNCTION TestString(p_IP IN Varchar2, p_port IN BINARY_INTEGER)
  RETURN VARCHAR2 AS EXTERNAL
  LIBRARY TEST4
  NAME "TestString"
  LANGUAGE c;



Том Кайт пишет, что надо указывать размер строки, которую вернет функция, но как это сделать?
...
Рейтинг: 0 / 0
19.11.2019, 15:06
    #39891137
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Sergey_rb,

Тут аналогичная проблема
...
Рейтинг: 0 / 0
19.11.2019, 15:11
    #39891141
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
-2-
Sergey_rb,

Тут аналогичная проблема


Да, я делал подключение DLL на другой работе, вот только много забыл...
...
Рейтинг: 0 / 0
19.11.2019, 15:36
    #39891164
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Записал текст ошибки в файл.

При попытке подключение по TCP/IP из DLL возникла ошибка:

Код: plsql
1.
2.
System Error.  Code: 123.
Синтаксическая ошибка в имени файла, имени папки или метке тома
...
Рейтинг: 0 / 0
19.11.2019, 15:55
    #39891178
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Синтаксическая ошибка в имени файла, имени папки или метке тома

Sergey_rb

При попытке подключение по TCP/IP


Не верю ©
...
Рейтинг: 0 / 0
19.11.2019, 16:09
    #39891186
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Вроде разобрался.

Из Oracle передается тип Varchar2, на входе функции DLL тип PCHAR.

В функцию, вместо входящего параметра IP и номера порта поступает вот такое


Код: plsql
1.
2.
??????0
??



Если в функции DLL поменять pchar на string, то вообще ничего не приходит.


Oracle 11g 64 bit.
...
Рейтинг: 0 / 0
19.11.2019, 16:13
    #39891189
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Sergey_rb
Если в функции DLL поменять pchar на string, то вообще ничего не приходит.
Метод тыка здесь не пройдёт.
...
Рейтинг: 0 / 0
19.11.2019, 16:34
    #39891206
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подключение к другому компьютеру через DLL
Elic
Sergey_rb
Если в функции DLL поменять pchar на string, то вообще ничего не приходит.
Метод тыка здесь не пройдёт.


Написал функцию в DLL, которая получает PCHAR и это же значение возвращает в виде PCHAR.
Функция возвращает корректное значение.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подключение к другому компьютеру через DLL / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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