The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Я крут ! (oracle) (install oracle database)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: install, oracle, database,  (найти похожие документы)
_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Lelik P. Korchagin 2:5020/412.459 16 Jan 98 09:07:46 Subj : Re: Я крут ! (oracle) ________________________________________________________________________________ Boris Tobotras <Boris_Tobotras@f510.n5020.z2.fidonet.org> wrote: > Так я не понял -- где рассказ про Oracle без iBCS? :) Видимо, этот текст где-то загулял. Суть следующая: естественно, без некоторой эмуляции ни одно произведение, написанное под СКО (и другие ОС), работать не будет. Другое дело, на каком уровне эту эмуляцию производить (kernel/user). Третье - как эту эмуляцию делать. Мне до звона в ушах надоел iBCS и Оракл под ним, особенно в части клиента, т.к. из-за пяти функций OCI все приложение должно работать в режиме эмуляции. Посему взял я оракловые библиотеки, раскрутил их в *.о, конвертнул в ELF утилиткой cof2elf (objcopy не катит) и посмотрел на список undefined symbols. После чего на каждый объектник натравил команду: ld -r -o ${obj}.new ${obj} ${wrappers} где wrappers - список undefined из части libc/libm с префиксом --wrap symbol (--wrap errno --wrap socket --wrap accept etc). Таким образом, мы с ld заменили все ссылки на интересные нам глобальные символы на символы с префиксом __wrap_ (man ld). Теперь дело за малым: написать врапперы. Как показало внимательное разглядывание спецификаций и хидеров СКОшного рантайма, требовалось подменить (в смысле написать) весь stdio, т.к. работа с файлами построена по другому, нежели в GNU libc (да, кстати: все экскременты проводились под RedHat-5.0 с glibc-2. В случае использования libc-5 надо написать функцию poll, ее там нет) и многое завязано на макросы, непосредственно лезущие в структуру FILE и вектор _iob (__iob ?), функцию open (из-за различных значений флагов), uname (из-за различных длин полей utsname), *stat etc. Так же надо было подсунуть: errno, __ctype, __ctype2, _cuclc (что это такое - не знаю). Общий принцип wrapper'a - формируем параметры, вызываем real function, формируем результат и __wrap_errno из errno, возвращаем результат. Для 80% функций этап формирования параметров и результата опускаются. За основу были взяты исходники glibc-1.09.1, libcs из лежащих рядом с iBCS (для stdio) и самого iBCS. В результате недельного траха образовалась библиотечка размером в 70K, при линковке с которой завелись все известные мне клиенты, использующие OCI. При попытке перелинковки Oracle с этой же библиотекой он не возмущался, а поднялся и откликнулся. Что мы получили в результате: в режиме эмуляции на клиенте работает только часть общения с СУБД, все остальное - в native режиме, для development'a не требуется кросс-средств, нет iBCS с ее проблемами (memory leaks, inodes, etc). Реально статически собранная перловка с DBI/DBD под SCO и Linux отличаются по производительности на ~70-80% в пользу Linux. По серверу не скажу, буду тестировать. Проблемы и ограничения: 1. все это очень-очень alpha, поэтому пока библиотечку для всеобщего обозрения выкладывать не буду. 2. _одна_ функция из SCO runtime взята прямо в .о (если мне скажут, что делает функция _ftol, то и ее не будет). 3. Есть проблемы с shared libraries. Динамически грузибельный модуль DBD для перла падает. Видимо, проблемы с PIC. 4. Это _не замена iBCS_. Если что-то есть только в binary, без iBCS не обойтись. 5. Все это делалось на инсталлированном Оракле. 6. К сожалению, сделать oracle-7.3-...-i386.rpm не удастся из-за сами поняли ... TODO: Взвести с этой библиотекой весь комплект (tnslsnr, exp, imp ...). Поиграться с версией для SVR4, там есть библиотеки pic. И вообще оттестироваться получше. Сделать ресурсы под линукс для tk2 И, наконец, сделать методику перехода для всеобщего пользования. -- With best regards, Lelik P. Korchagin --- ifmail v.2.12.os * Origin: Lelik's nest (2:5020/412.459@fidonet) _ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : lelik@price.ru 2:5020/412.459 14 Jan 98 12:21:06 Subj : Re: Я крут ! (oracle) ________________________________________________________________________________ Суть следующая: естественно, без некоторой эмуляции ни одно произведение, написанное под СКО (и другие ОС), работать не будет. Другое дело, на каком уровне эту эмуляцию производить (kernel/user). Третье - как эту эмуляцию делать. Мне до звона в ушах надоел iBCS и Оракл под ним, особенно в части клиента, т.к. из-за пяти функций OCI все приложение должно работать в режиме эмуляции. Посему взял я оракловые библиотеки, раскрутил их в *.о, конвертнул в ELF утилиткой cof2elf (objcopy не катит) и посмотрел на список undefined symbols. После чего на каждый объектник натравил команду: ld -r -o ${obj}.new ${obj} ${wrappers} где wrappers - список undefined из части libc/libm с префиксом --wrap symbol (--wrap errno --wrap socket --wrap accept etc). Таким образом, мы с ld заменили все ссылки на интересные нам глобальные символы на символы с префиксом __wrap_ (man ld). Теперь дело за малым: написать врапперы. Как показало внимательное разглядывание спецификаций и хидеров СКОшного рантайма, требовалось подменить (в смысле написать) весь stdio, т.к. работа с файлами построена по другому, нежели в GNU libc (да, кстати: все экскременты проводились под RedHat-5.0 с glibc-2. В случае использования libc-5 надо написать функцию poll, ее там нет) и многое завязано на макросы, непосредственно лезущие в структуру FILE и вектор _iob (__iob ?), функцию open (из-за различных значений флагов), uname (из-за различных длин полей utsname), *stat etc. Так же надо было подсунуть: errno, __ctype, __ctype2, _cuclc (что это такое - не знаю). Общий принцип wrapper'a - формируем параметры, вызываем real function, формируем результат и __wrap_errno из errno, возвращаем результат. Для 80% функций этап формирования параметров и результата опускаются. За основу были взяты исходники glibc-1.09.1, libcs из лежащих рядом с iBCS (для stdio) и самого iBCS. В результате недельного траха образовалась библиотечка размером в 70K, при линковке с которой завелись все известные мне клиенты, использующие OCI. При попытке перелинковки Oracle с этой же библиотекой он не возмущался, а поднялся и откликнулся. Что мы получили в результате: в режиме эмуляции на клиенте работает только часть общения с СУБД, все остальное - в native режиме, для development'a не требуется кросс-средств, нет iBCS с ее проблемами (memory leaks, inodes, etc). Реально статически собранная перловка с DBI/DBD под SCO и Linux отличаются по производительности на ~70-80% в пользу Linux. По серверу не скажу, буду тестировать. Проблемы и ограничения: 1. все это очень-очень alpha, поэтому пока библиотечку для всеобщего обозрения выкладывать не буду. 2. _одна_ функция из SCO runtime взята прямо в .о (если мне скажут, что делает функция _ftol, то и ее не будет). 3. Есть проблемы с shared libraries. Динамически грузибельный модуль DBD для перла падает. Видимо, проблемы с PIC. 4. Это _не замена iBCS_. Если что-то есть только в binary, без iBCS не обойтись. 5. Все это делалось на инсталлированном Оракле. 6. К сожалению, сделать oracle-7.3-...-i386.rpm не удастся из-за сами поняли ... TODO: Взвести с этой библиотекой весь комплект (tnslsnr, exp, imp ...). Поиграться с версией для SVR4, там есть библиотеки pic. И вообще оттестироваться получше. Сделать ресурсы под линукс для tk2 И, наконец, сделать методику перехода для всеобщего пользования. -- With best regards, Lelik P. Korchagin --- ifmail v.2.12.os * Origin: Lelik's nest (2:5020/412.459@fidonet) _ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Lelik P. Korchagin 2:5020/412.459 28 Jan 98 20:54:58 Subj : Я крут ________________________________________________________________________________ Мужики ! В связи с последними моими игрищами на ftp://ftp.price.ru/pub/Linux/Redhat-5.0/mycontrib/Oracle образовалось нечто под имемнем oracle-*-7.3.2-*-i386-rpm. Это ставится под RH5.0/glibc-2.0.6/ibcs-2.0.971113 и (вроде) даже работает. Как и всегда, за последствия не отвечаю. Игрища не требуют ничего, кроме iBCS. Оракл - 7.3.2.1.0 со всеми опциями, включая spatial data и advansed replication. Игры продолжаются. Ждите oracle-ocidevel-7.3.2.* с pseudo-native Linux support. Он не за горами. Там же лежит DBD-Оracle к перлу. Он требует oracle-common, хотя пока про это нифига не говорится. Зато iBCS не нужен (СЮРПРИЗ !). -- With best regards, Lelik P. Korchagin 2БТ: Поскольку я не согласен с политикой Oracle по части Free U*Xes, имею в виду все лицензионные соглашения. 2All: Hарод ! Ежели вы в 2:5020 (Moscow), лучше ко мне ногами с пивом (930-0090,91). Заодно и поговорим. И канал разгрузим. А ? --- ifmail v.2.12.os * Origin: Lelik's nest (2:5020/412.459@fidonet)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру