Программизм |
|
|
|
Два КСлова про Oracle — установка ODBC-драйвераВ наш грандиозный век* гигагерц и терабайт многие успели забыть о таком замечательном API как ODBC. Замечательность его в том, что программа может работать с любым сервером баз данных (или даже с локальными данными, например, файлами DBF) при помощи одних и тех же функций. Сегодня большинство программистов пишут приложения** на Delphi с использованием BDE или же на всевозможных платформах от Microsoft с использованием ADO, DAO, Я использую ODBC для доступа к Oracle из Excel через DAO (это отдельная большая тема, к которой я ещё планирую вернуться). Да, я знаю, что есть Oracle Objects for OLE, но «так исторически сложилось». Случилось так, что написав очередное приложение, я обнаружил, что оно не работает на большинстве компьютеров нашей компании. Почему? Ответ нашёлся достаточно быстро — клиент Oracle установлен некорректно, и ODBC-драйвер не работает. Казалось бы, какие проблемы? Драйвера свободно раздаются на OTN, скачиваешь и ставишь. Так-то оно так, но для того, чтобы установить эти драйвера, нужен Могучий Инструмент (mightful tool) под названием Oracle Universal Installer, который «весит» около 60 мегабайт, да ещё и написан на Java. Мало того, что один только запуск этого приложения отнимает добрых две-три минуты, так оно в добавок тоже не хотело работать на наших компьютерах. Пришлось разбираться, как обойтись без него. Результаты потрясают воображение. Итак, архив с драйвером занимает около При выборе версии роль играют первые два числа. Так, для клиента 8.1.x я брал драйвер версии 8.1.7.8.10, а для клиента 9.2.x — 9.2.0.6.0. Все нужные нам файлы хранятся в трёх архивах, находящихся в одном из подкаталогов дерева, получившегося после разархивирования скачанного с OTN файла. Путь к этому подкаталогу (внимание!) — 14.05.2003 05:29 218 ORAODBC.INI 14.05.2003 05:29 2543 sqora.cnt 14.05.2003 05:30 95505 sqora.hlp 23.10.2003 14:21 507904 sqora32.dll 23.10.2003 14:22 61440 sqoras32.dll 23.10.2003 14:23 32768 sqresus.dll 14.05.2003 05:29 11776 DECKAN32.DLL 14.05.2003 05:30 12288 oraodbcus.msb А вот тут — для версии 9.2.x: 13.05.2003 10:49 218 ORAODBC.INI 07.11.2003 13:14 2479 sqora.cnt 07.11.2003 13:14 112260 sqora.hlp 29.01.2004 09:50 425984 sqora32.dll 29.01.2004 09:50 61440 sqoras32.dll 29.01.2004 09:50 32768 sqresus.dll 13.05.2003 10:49 11776 DECKAN32.DLL 13.05.2003 11:49 13312 oraodbcus.msb Списки файлов, как видно, не отличаются друг от друга. Теперь надо во-первых, скопировать файлы туда, куда нужно, и во-вторых, сделать запись в реестре о том, что драйвер установлен. Обладатели Windows NT/2000/XP могут воспользоваться следующим batch-файлом: @echo off set INSTALLHELP=NO regedit /ea %TEMP%\oh.reg HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0 for /F %%i in ('find """ORACLE_HOME""" ^< %TEMP%\oh.reg') do ( set ALLKEY=%%i ) set RKEY=%ALLKEY:~15,-1% set KEY=%RKEY:\\=\% copy /Y %~dp0oraodbc.reg %TEMP%\oh.reg > nul 2> nul echo "Setup"="%RKEY%\\bin\\SQORAS32.DLL">>%TEMP%\oh.reg echo "Driver"="%RKEY%\\bin\\SQORA32.DLL">>%TEMP%\oh.reg regedit /s %TEMP%\oh.reg copy /Y oraodbc.ini %WINDIR% > nul 2> nul if %INSTALLHELP%==YES ( for %%i in (%~dp0sqora.hlp %~dp0sqora.cnt) do ( copy /Y %%i %WINDIR%\System32 > nul 2> nul ) ) for %%i in (%~dp0sqora32.dll %~dp0sqoras32.dll %~dp0sqresus.dll) do ( copy /Y %%i %KEY%\bin > nul 2> nul ) mkdir %KEY%\ODBC > nul 2> nul copy /Y %~dp0DECKAN32.DLL %KEY%\ODBC > nul 2> nul mkdir %KEY%\ODBC\mesg > nul 2> nul copy /Y %~dp0oraodbcus.msb %KEY%\ODBC\mesg > nul 2> nul echo Oracle ODBC Driver is installed Обладатели же Windows 95/98/ME могут снести свою оболочку и установить нормальную систему или же скопировать В batch-файле упоминается файл REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers] "Oracle ODBC Driver"="Installed" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Oracle ODBC Driver] "APILevel"="1" "CPTimeout"="60" "ConnectFunctions"="YYY" "DriverODBCVer"="03.51" "FileUsage"="0" "SQLLevel"="1" Пользователям Windows семейства NT беспокоиться не о чем — batch сам выполнит всю необходимую работу, а вот поклонникам/заложникам 9x придётся вручную добавить к этому файлу две строки: "Setup"="ORACLE_HOME\\bin\\SQORAS32.DLL" "Driver"="ORACLE_HOME\\bin\\SQORA32.DLL" разумеется, подставив вместо Ну, и наконец, финальный аккорд — создание Data Source, то есть источника данных. Обычно это делается через панель управления, но в конечном счёте, всё сводится к записи в реестр. Вот пример такой записи: REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources] "ora92"="Oracle ODBC Driver" [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ora92] "Driver"="C:\\progra~1\\oracle\\ora92\\BIN\\SQORA32.DLL" "Translation DLL"="" "Translation Option"="0" "Attributes"="W" "PrefetchCount"="10" "ForceWCHAR"="F" "FailoverDelay"="10" "FailoverRetryCount"="10" "MetadataIdDefault"="F" "Longs"="F" "CloseCursor"="T" "EXECSchemaOpt"="" "EXECSyntax"="F" "Application Attributes"="T" "SQLGetData extensions"="F" "ResultSets"="T" "QueryTimeout"="F" "Failover"="F" "Lobs"="T" "DisableMTS"="F" "BatchAutocommitMode"="IfAllSuccessful" "Description"="ORACLE 9.2" "ServerName"="" "Password"="" "UserID"="" "DSN"="ora92" В данном случае Дочитавшим эту статью до конца желаю надёжных дисков и достоверных данных! 10.03.2004 * Для тех, кто понимает: цитата из повести Юрия Сотника «Эликсир Купрума Эса» ** Говорят, что программа не должна быть больше, чем 64 К. Всё, что больше, уже не программа, а приложение. *** Бытует шутка, что в недрах Microsoft уже готова новая разработка — Microsoft Universal Data Access Components. |
ПоискСм. такжеИменно им призван помочь описанный здесь скрипт, сохраняющий письма с бесплатных ящиков на локальный диск.... »»» архив с драйвером занимает около во-первых, процедуру копирования нужно вызвать из программы на VisualBasic, а во-вторых, у пользователя нет прав на запись в каталог... »»» Рекомендую
e.g.Orius Copyright noticeъ) Все материалы, размещённые на странице, являются неотъемлемой собственностью автора с вытекающими отсюда правами, как ©, так и (ъ). Некоммерческое их распространение всячески приветствуется, разумеется, при условии сохранения ссылки на оригинал. Что касается коммерческого использования — пишите письма, договориться можно всегда. Удивительное рядом
Пишите письма
Счётчики |