ODBC & Oracle
- From
- Max Khon (2:5000/79)
- To
- Eugene Grosbein
- Date
- 2005-06-08T04:36:36Z
- Area
- RU.UNIX.BSD
hi, there!
07 Jun 05 21:36, you wrote to me:
EG>>> Можно как-то собрать ODBC-клиента так, что он будет работать с
EG>>> Оркалом? Предполагаем, что под фрей приложение собирается и ODBC
EG>>> использует корректно.
MK>> если без всяких odbc-odbc bridge, то думается что кроме как путем
MK>> написанwия
MK>> ODBC драйвера для Oracle -- никак. думается что opensource ODBC
MK>> драйвер for Oracle нужен много кому.
EG> Вот тут оно есть: http://fndapl.fnal.gov/~dbox/oracle/odbc/
EG> Но клиент в портах слишком куцый, многих хедеров нет, поэтому
EG> Oracle Open Source ODBC Driver под фрей не собирается,
EG> а собирать в линухоляторе не хочется - это потом там же приложение
EG> собирать и гонять.
на самом деле мне всегда казалось, что если проделать с либами от линуксового
Oracle клиента, то же что было проделано с либами от клиента для SCO (из которых
по байкам был сделан oracle7-client), то можно будет получить более-менее
работающий клиент для oracle8.
этой ночью я немного поковырялся..
кажется я научился линковать нативные бинари со статическими либами от Oracle
8.1.7 for Linux через небольшую прослойку (сделанную из кусков FreeBSD kernel
linuxulator, кусков OpenBSD libc и пары исходников про локали из glibc 2.2.x).
пока успел потестировать (с сервером Oracle 8.1.7 for Linux на 5.4-RELEASE)
только мелкие программки из rdbms/demo:
- oci?? (работают все, кроме oci21 и oci22, которые тестируют async mode) -
некоторые blob test'ы (cdemolb, cdemolb2, cdemolbs -- работают все).
-+- cut here ---
fjoe@husky:~/y/demo$ldd ./cdemolb
./cdemolb:
libm.so.3 => /lib/libm.so.3 (0x284df000)
libpthread.so.1 => /usr/lib/libpthread.so.1 (0x284fa000)
libc.so.5 => /lib/libc.so.5 (0x2851e000)
fjoe@husky:~/y/demo$file cdemolb2
cdemolb2: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for
FreeBSD 5.3-CURRENT (rev 5), dynamically linked (uses shared libs), not stripped
fjoe@husky:~/y/demo$ls -l cdemolb2
-rwxrwxr-x 1 fjoe fjoe 5396303 8 июн 05:33 cdemolb2*
fjoe@husky:~/y/demo$uname -a
FreeBSD husky.fjoe.local 5.4-PRERELEASE FreeBSD 5.4-PRERELEASE #15: Mon Apr 4
13:38:48 NSS 2005 fjoe@husky.fjoe.local:/usr/obj/usr/fbsd/RELENG_5/sys/husky
i386
fjoe@husky:~/y/demo$./cdemolb2 cdemolb.dat giffile.dat
===> Testing loading files into lobs .....
--> To do streamed write lob, amount = 35717
Before stream write, LOB length = 0
After stream write, LOB length = 35717
--> To do streamed write lob, amount = 64920
Before stream write, LOB length = 0
After stream write, LOB length = 64920
===> Testing writing lobs to files .....
--> To stream read LOB, loblen = 35717.
stream read 1 th piece, amtp = 5000
stream read 2 th piece, amtp = 5000
stream read 3 th piece, amtp = 5000
stream read 4 th piece, amtp = 5000
stream read 5 th piece, amtp = 5000
stream read 6 th piece, amtp = 5000
stream read 7 th piece, amtp = 717
--> To stream read LOB, loblen = 64920.
stream read 1 th piece, amtp = 5000
stream read 2 th piece, amtp = 5000
stream read 3 th piece, amtp = 5000
stream read 4 th piece, amtp = 5000
stream read 5 th piece, amtp = 5000
stream read 6 th piece, amtp = 5000
stream read 7 th piece, amtp = 5000
stream read 8 th piece, amtp = 5000
stream read 9 th piece, amtp = 5000
stream read 10 th piece, amtp = 5000
stream read 11 th piece, amtp = 5000
stream read 12 th piece, amtp = 4920
===> Testing loading files into lobs .....
--> To do callback write lob, amount = 35717
Before callback write, LOB length = 0
After callback write, LOB length = 35717
--> To do callback write lob, amount = 64920
Before callback write, LOB length = 0
After callback write, LOB length = 64920
===> Testing writing lobs to files .....
--> To callback read LOB, loblen = 35717.
callback read the 1 th piece
callback read the 2 th piece
callback read the 3 th piece
callback read the 4 th piece
callback read the 5 th piece
callback read the 6 th piece
callback read the 7 th piece
callback read the 8 th piece
--> To callback read LOB, loblen = 64920.
callback read the 1 th piece
callback read the 2 th piece
callback read the 3 th piece
callback read the 4 th piece
callback read the 5 th piece
callback read the 6 th piece
callback read the 7 th piece
callback read the 8 th piece
callback read the 9 th piece
callback read the 10 th piece
callback read the 11 th piece
callback read the 12 th piece
callback read the 13 th piece
Logged off and detached from server.
All handles freed
fjoe@husky:~/y/demo$
-+- cut here ---
заворачивать все это в re-distributable вид пока рано. но думается что
вышеупомянутый ODBC драйвер с применением напильника собрать с этим уже можно
(по крайней мере это должно быть намного легче, чем порт на OCI7) и работать
в каком-то виде должно. за подробностями в e-mail.
думается что с линуксовым клиентом от Oracle 10g можно проделать то же самое.
/fjoe
--- GoldED+/BSD 1.1.5
* Origin: The number of the beast is vi vi vi (2:5000/79)
SEEN-BY: 46/50 400/520 814 450/1024 463/68 464/36 910 465/213 5000/0 1 2 3 20
SEEN-BY: 5000/26 27 28 52 61 67 79 81 94 104 111 116 170 363 5000 5004/75 1111
SEEN-BY: 5005/14 5009/14 5010/77 275 5011/13 5013/21 5015/10 5019/31 5020/545
SEEN-BY: 5020/715 4441 5021/29 5025/3 5027/16 5029/34 5030/115 5035/38 5036/34
SEEN-BY: 5054/1 4 8 9 28 35 36 37 45 63 66 67 70 75 81 84 85 5057/119 5062/10
SEEN-BY: 5063/3 5069/7 5080/1003 5085/13 5090/1029 5095/20 5096/18 6000/254
SEEN-BY: 6001/10
PATH: 5000/79 26 5000 5020/545 5054/1 37