LINUX.ORG.RU

Oracle socket read timeout

 , ,


1

2

Есть приложение (С++) которое конектится к ораклу DB (используя OCI libclntsh.so). Иногда между приложением и ораклом случается отвал сети, в результате чего libclntsh залипает в «read» из сокета и висит там часами.

Вопрос: можно ли както добавить таймаут на чтение из сокета ? (гугл говорит что для JDBC и С# конектора можно, а вот для C не могу найти ничего такого ...)

★★★★

Ответ на: комментарий от Ja-Ja-Hey-Ho

Это не те таймауты, мне нужны таймауты на стороне клиента (клиент теряет сеть до DB сервера и не видит этого на уровне OS (драйвер не выходит из read)).

А это таймауты на стороне сервера (если вдруг клиент отвалился и сервер должен закрыть мертвые сесси).

zaz ★★★★
() автор топика
Ответ на: комментарий от zaz

по идее в TNS прямо прописать таймаут

anonymous
()

Работая через OCI, не надо трогать сокет.

Используй OCIAttrSet с OCI_ATTR_CONN_TIMEOUT и OCI_ATTR_TRANS_TIMEOUT.

LamerOk ★★★★★
()

А это, кроме уродского instantclient есть для оракла чо? Ну чтобы без непонятных либ в 64 мегабайта (там жаба внутри, что-ли, едрить??? Дебилы, итить), на которую ещё надо ocilib накатить, чтобы этим можно было пользоваться. Что-нибудь маленькое и лёгкое размером с mysqlclient и вменяемым API вместо инопланетного оракловского дерьмища.

Вообще сетевой протокол оракловой DB кто-то ковыряет/ковырял, чтобы нормальную кросс-архитектурную либу можно было написать?

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

непонятных либ в 64 мегабайта (там жаба внутри, что-ли, едрить???

Херни не неси. Это код/даныне для преобразования кодировок/дат и прочего. Если не нужны, то {lib,ora}ociei*{dll,lib} можно заменить на {lib,ora}ociicus*{dll,lib}.

на которую ещё надо ocilib накатить

OCI - самостоятельная либа, можно польоваться без ничего, включая instantclient.

сетевой протокол оракловой DB кто-то ковыряет/ковырял, чтобы нормальную кросс-архитектурную либу можно было написать?

Нарушение EULA. Оба пункта.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Херни не неси. Это код/даныне для преобразования кодировок/дат и прочего. Если не нужны, то {lib,ora}ociei*{dll,lib} можно заменить на {lib,ora}ociicus*{dll,lib}.

Да щаз.

Для венды

-rw-r--r-- 1 stanson users 64726016 Feb 14  2017 oraociicus12.dll

Для линукса

-rwxrwxr-x 1 stanson users 58547108 Feb  1  2017 libclntsh.so.12.1

Без этих гигантских либ ничего не работает.

OCI - самостоятельная либа, можно польоваться без ничего, включая instantclient.

Минимальное что можно скачать чтобы её добыть - instantclient-basiclite

Минимальный набор библиотек для говновенды, например:

oci.dll
ociliba.dll
ociw32.dll
oraociicus12.dll
oraons.dll
orasql12.dll

Если досточтимый сэр расскажет как можно обойтись без многомегабайтного шлака в виде {lib,ora}ociicus*{dll,lib} - будет здорово. И да, инопланетный API ораклового OCI не нужен, нужно что-то типа ocilib - init/connect/prepare/bind/execute/fetch_result/free_result/disconnect/cleanup

Но дело даже не в этом. Иногда возникают задачи типа подключения клиента на MIPS'е с линуксом к оракловой базе. Хотелось бы решать такие задачи элегантно, как это делается с нормальными БД типа постгреса, марии, мускуля и пр., а не «коннектится ssh'ем к мощной тачке где стоит sqlplus».

Нарушение EULA. Оба пункта.

А это не мои проблемы, а заказчика. Его никто не заставлял покупать оракель, а потом пытаться его использовать как обычную БД.

И, кстати, есть же ODAC за денежку - там есть Direct Access по TCP/IP. Без всяких OCI.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 3)
Ответ на: комментарий от Stanson

Для венды

l oraociicus11.dll 
-rwxrwxrwx 1 36286464 2013-10-11 15:23 oraociicus11.dll

Минимальный набор библиотек для говновенды, например:

-rwxrwxrwx 1  1036288 2013-10-11 15:20 oci.dll
-rwxrwxrwx 1 36286464 2013-10-11 15:23 oraociicus11.dll

32-bit, 11.x

Если досточтимый сэр расскажет как можно обойтись без многомегабайтного шлака в виде {lib,ora}ociicus*{dll,lib} - будет здорово.

Элементарно - не пользуйся Oracle.

И да, инопланетный API ораклового OCI не нужен,

«Не пользуйся Oracle — 2».

А это не мои проблемы, а заказчика.

Это ты дознавателю в околотке впаривать будешь.

Его никто не заставлял

И тебя никто не заставлял браться за работу, которую ты не можешь сделать.

есть же ODAC за денежку

Ну, так покупай! Чего ж ты ждёшь тут на лоре?!?

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

И, кстати, насчёт легальности. Протокол ковырять абсолютно легально даже по американским законам:

17 U.S. Code § 1201 - Circumvention of copyright protection systems

....

(f) Reverse Engineering. -

(1) Notwithstanding the provisions of subsection (a)(1)(A), a person who has lawfully obtained the right to use a copy of a computer program may circumvent a technological measure that effectively controls access to a particular portion of that program for the sole purpose of identifying and analyzing those elements of the program that are necessary to achieve interoperability of an independently created computer program with other programs, and that have not previously been readily available to the person engaging in the circumvention, to the extent any such acts of identification and analysis do not constitute infringement under this title.

(2) Notwithstanding the provisions of subsections (a)(2) and (b), a person may develop and employ technological means to circumvent a technological measure, or to circumvent protection afforded by a technological measure, in order to enable the identification and analysis under paragraph (1), or for the purpose of enabling interoperability of an independently created computer program with other programs, if such means are necessary to achieve such interoperability, to the extent that doing so does not constitute infringement under this title.

(3) The information acquired through the acts permitted under paragraph (1), and the means permitted under paragraph (2), may be made available to others if the person referred to in paragraph (1) or (2), as the case may be, provides such information or means solely for the purpose of enabling interoperability of an independently created computer program with other programs, and to the extent that doing so does not constitute infringement under this title or violate applicable law other than this section.

(4) For purposes of this subsection, the term "interoperability" means the ability of computer programs to exchange information, and of such programs mutually to use the information which has been exchanged.

...

Пункты EULA противоречащие закону - ничтожны во всех странах.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 2)
Ответ на: комментарий от LamerOk

32-bit, 11.x

Ну и нахера там 32 мегабайта? Всякие постгресы прекрасно сотней килобайт обходятся.

Элементарно - не пользуйся Oracle.

Я и не пользую. Просто иногда за решениями проблем обращаются всякие люди желающие странного.

Ну, так покупай! Чего ж ты ждёшь тут на лоре?!?

Купил бы даже проф.версию с исходниками (всё равно с заказчика сдеру). Но проблема в том, что именно DirectAccess они в сырцах не отдают.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

ничтожны во всех странах.

«Не неси херни — 2».

Какие конкретно пункты EULA ничтожны в рамках юрисдикции конкретной страны определяется законами этой самой страны. Т.е. везде они будут разными.

«Не неси херни — 3».

to the extent any such acts of identification and analysis do not constitute infringement under this title.
to the extent that doing so does not constitute infringement under this title.
to the extent that doing so does not constitute infringement under this title or violate applicable law other than this section.

LamerOk ★★★★★
()
Ответ на: комментарий от Stanson

Ну и нахера там 32 мегабайта?

Для любителей делать TOUPPER в селекте. У Оракла все преобразования данных происходят на клиентской стороне.

Плюс, там кроме сетевого протокола еще и локальный клиент.

Но проблема в том, что именно DirectAccess они в сырцах не отдают.

А всё остальное, типа, можно качнуть с гитхаба..

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 1)
Ответ на: комментарий от LamerOk

У Оракла все преобразования данных происходят на клиентской стороне.

Да мне насрать на дебильные решения оракла. Я наоборот ищу способ их не использовать. TNS/TTI протоколы не так уж сложны, я полагал, что те, кто с ораклом постоянно возятся давно уже сделали нормальную человеческую, а не оракловую клиентскую либу для работы с БД oracle.

А всё остальное, типа, можно качнуть с гитхаба..

Оно всего $500 стоит в Professionsl версии. Сырцы входят в комплект. Но, сцуко, кроме сырцов того самого небольшого кусочка, который интересует - DirectAccess по TCP/IP.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Да мне насрать

Я уже вижу, как ты проскакал тысячу миль, чтобы сообщить всем об этом.

я полагал, что те, кто с ораклом постоянно возятся давно уже сделали нормальную человеческую, а не оракловую клиентскую либу для работы с БД oracle.

Тут весь цимес в «нормальности». Судя по тому, что следствие в твоей импликации ложно, не верна сама посылка. Очевидно, что все нормальные люди пользуются нормальной оракловой библиотекой, а не совсем нормальные «хотят странного».

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 2)
Ответ на: комментарий от LamerOk

Я уже вижу, как ты проскакал тысячу миль, чтобы сообщить всем об этом.

Я тыщу миль проскакал, чтобы спросить - есть чо не от оракла для их БД?. А мне вместо простого ответа «нет, нету / да, качай отсюда ...» рассказывают, какое вкусное на вкус говно от оракла, и что жрать это говно правильно и полезно.

Тут весь цимес в «нормальности».

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Я тыщу миль проскакал, чтобы спросить

Толстовато набросить про толстоту, вернее.

ораклолюбцы сами считают себя нормальными

Информация к размышлению: ораклохейтеры точно так же пользуются оракловыми либами.

есть чо не от оракла для их БД?

Нет, нету. %%И не будет.%%

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Толстовато набросить про толстоту, вернее.

Пока толстый сохнет, худой сдохнет.

Информация к размышлению: ораклохейтеры точно так же пользуются оракловыми либами.

Не обязательно. Рубисты вот пилят что-то https://github.com/SpiderLabs/net-tns , например. Или занедорого ODAC тот же, которым, кстати, его юзеры вполне довольны.

Нет, нету. %%И не будет.%%

Да есть, на самом деле, но такое же упоротое и проприетарное.

Stanson ★★★★★
()
Ответ на: комментарий от LamerOk

Ты хоть понял что процитировал?

Именно из-за этих пунктов, мелкософт ничего не смог сделать ни с самбой, ни с открытыми реализациями RDP. И оракель тоже ничего не сможет сделать если кто-то напишет альтернативного клиента к его БД. Даже в штатах.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Именно из-за этих пунктов, мелкософт ничего не смог сделать ни с самбой, ни с открытыми реализациями RDP.

Ты не путай свою жопу с чужим пальцем. CIFS/SMB был разработан для платфом, для которых не было другой реализации (от производителя). Реализации CIFS/SMB под венду, отличной от MS, до сих пор нет, несмотря на.

RDP - разработка поверх ITU-T T.128.

Под какой DOS на Nokia 3310 ты собрался разрабатывать оракловый клиент, чтобы не конкурировать с уже существующим?

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

CIFS/SMB был разработан для платфом, для которых не было другой реализации (от производителя).

Жопу с пальцем тут только ты путаешь. В законе ничего нет про существование реализации от производителя. Есть только «achieve interoperability of an independently created computer program»

Реализации CIFS/SMB под венду, отличной от MS, до сих пор нет, несмотря на.

Никто не запрещает собрать самбу под венду.

RDP - разработка поверх ITU-T T.128.

Только с мелкософтовскими извратами, чтобы клиент сделанный по стандарту (который сам же мелкософт и протолкнул, кстати.) не работал.

Под какой DOS на Nokia 3310 ты собрался разрабатывать оракловый клиент, чтобы не конкурировать с уже существующим?

Существующие архитектуры не ограничиваются перечисленными на сайте оракла. MIPS, ARM, PowerPC... Мне для MIPS было нужно. В любом случае оракловский протокол законно не только реверсить (что уже в общем-то давно сделано), но и писать софт который его пользует без всякого на то ораклового разрешения.

Stanson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.