:: Не фоксом единым
Эксперименты с тонким клиентом Оракл
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Всегда ставили Instant client oracle тупым способом,
в одну и туже директорию на локальном диске,
переменные окружения устанавливал программно.
Все работало. Сейчас осень, какое-то обострение.
Решили сверху ставить одбс клиент так, чтобы там была переменная окружения,
ответственная за путь
Программу установки переменных окружения изменил, чтобы там был
использован этот путь
Коннекция не идет , не видит sqlora32.dll
Файл занесения в реестр срабатывает, и драйвер
одбс виден через win32 вижу среди других драйверов
Зачем так придумали, мне и самому не понятно.



Исправлено 1 раз(а). Последнее : boba, 16.10.17 10:59
Ratings: 0 negative/0 positive
Re: Эксперименты с тонким клиентом Оракл
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
1) В реестр так данные вносить не стоит. Во-первых для x64 версии ос в разделе HKEY_LOCAL_MACHINE\SOFTWARE\ODBC описываются 64-битные драйвера, а в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC - 32-битные. У тебя же и там и там один будет прописан... Т.е. нужно определять разрядность ОС и писать 32-битный драцвер либо туда, либо туда, но не в оба места одновременно.
2) Я не экспериментировал с ЛОКАЛЬНЫМ заданием переменных окружения. А ты именно локально их определяешь - для текущего процесса. Это значит что другой процесс эти изменения не увидит (и PATH, и этот LOCALAPPDATA). Да и бог его знает как сработает поиск самого драйвера, путь к которому указан с использованием переменной окружения. Тем более что тип ключа в reg-файле не указывается, а по идее для ключа "пути с переменной" нужен не просто REG_SZ, а REG_EXPAND_SZ. В общем я бы точно не стал писать в reg файле такой путь.
3) Для новых IC (и 11 и 12 версии) в PATH нужно прописывать ДВА пути - к собственно "корневой" папке клиента, и к его подпапке bin. При этом никаких пробелов между элементами не требуется.
4) RUSSIAN_CIS - IMHO отвратительная локаль. Во-первых она устаревшая, и в новых версиях сервера уже не поддерживается (заменили на RUSSIAN_RUSSIA) но и RUSSIAN_RUSSIA не универсальна - вдруг ещё где какой сервер 9-й версии встретится, где такой локали не было, во-вторых идиотский разделитель дробной/целой части в числах (запятая) который напрочь ломает в фоксе все дробные числа... В общем крайне не рекомендую. Всегда работал и работаю с AMERICAN_AMERICA и горя не знал


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Эксперименты с тонким клиентом Оракл
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Игорь
Трюк с изменением файла реестра позволил
запускать 32 разрядный клиент и на 64 разрядных машинах
Это проверено, и у меня для 10 клиента работает уже года 4, если не больше
У нас есть и 32 разрядные компы, и 64 разрядные.
Людям часто компы меняют на новые, не заморачиваясь инсталяцией, а просто делая образ диска кроме директорий виндов. Никто не станет разбираться какой комп -32 или 64 разряда,
Тут не об этом речь в данном случае убрали явный путь на клиент, подставив %переменная окружения
Для sqlserver такая штука работает, и тут на это же надеялись, но пока не катит.
функцию =fixenv() вариант c явными путями работает давно.
Писать руками в переменные окружения никто не будет, у нас пять или 6 мест территориально,
приложений для Оракл и раб мест хренова туча. При установки новых приложений бывало, что
переменные окружения слетают. И сил ходить по всем компам нет сил. Кроме этого дел полно.
А установка переменных программно работает. Другим сессиям это не мешает, а им и не нужно.
Программа как раз ставит в переменные окружения верные пути, без всяких %
Текст ошибки как раз реагирует не на явный путь, а на путь в реестре с %



Исправлено 2 раз(а). Последнее : boba, 16.10.17 13:26
Ratings: 0 negative/0 positive
Re: Эксперименты с тонким клиентом Оракл
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
boba
Трюк с изменением файла реестра позволил
запускать 32 разрядный клиент и на 64 разрядных машинах
Потому что на x64 ты делаешь неверную/некорректную запись про x64 драйвер - но им никто не пользуется. Т.е. просто ты записываешь мусор. В 32-битной винде ты тоже записываешь мусор, но там эти ветки вообще никто не использует. Как по мне так в любом случае мусор - это нехорошо. Тем более что определить разрядность ОС и банально прописывать либо туда, либо сюда не составляет труда. Ну разве что если из cmd это делать, там есть небольшой нюанс (сам cmd есть 32-битный и есть 64-битный) - но тоже вполне решаемо.
boba
А установка переменных программно работает. Другим сессиям это не мешает, а им и не нужно.
Отт структуры ПО зависит. Если не порождаются новые процессы которым нужно работать с тем же клиентом (скажем какой excel, который своими силами делает через ODBC/OLEDB запрос к ораклу для генерации отчёта), и если эта самая установка переменных успевает сработать ДО первого обращения к инфраструктуре оракловского клиента, то по идее должно работать. Правда чисто фоксовая функция GETENV уже идёт побоку, т.к. она не увидят изменений в переменных окружения (вероятно в момент старта рантайма фокс делает "снимок" переменных и дальнейшие изменения уже не влияют на него - но не на внешние компоненты типа того же драйвера, конечно).
boba
Текст ошибки как раз реагирует не на явный путь, а на путь в реестре с %
Я ж говорю - даже просто "по логике" для прописывания пути с переменной нужно задать ключу тип REG_EXPAND_SZ, чего никак не добиться через импорт reg файла (через утилиту reg.exe, кстати, вполне себе можно). Но и этот вариант не факт что заработает. Т.е. прежде руками пропиши этот ключ с таким типом и переменной и проверь заработает или нет. Если да, то вместо импорта reg файла используй либо АПИ функции (но там тоже нужно разбираться с параметрами!), либо утилиту reg.exe. Вот кусочек моего батника установки IC где как раз в реестр прописывается параметр типа REG_EXPAND_SZ (это параметр отвечающий за PATH - если его по другому в реестр писать, скажем утилитой setx то как раз портится часть связанная с "переменными" в путях - всё превращается в обычные пути...)

:: Unpaired double quote symbol is intentional!
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v Path /t REG_EXPAND_SZ /d "%newpath%

В общем не понимаю я сути проблемы - для "установки" требуется просто батник, или небольшая программка которая всё пропишет раз и навсегда - и PATH/TNS_ADMIN/NLS_LANG и записи в реестр о драйвере. Если "особо умные" что-то портят, то просто ещё раз запустить такую программку (админом) и всё...
Изнутри собственно прикладной программы это не исправить. Да, переменные окружения можно задать "локальные", но как быть с реестром для записей драйвера? Для записи в эту часть реестра нужны админские права, а значит сама прикладная программа идёт лесом - она не сможет "починить" реестр.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Эксперименты с тонким клиентом Оракл
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Игорь.
Да, фоксовым registry.prg
можно делать то же самое,
и определяя тип виндов писать в реестр только то,
что нужно, не создавая мусора. Я пробовал,
результат аналогичный. А можно и батником.
В самом начале поста я описал ситуацию,
она не сколько программная, сколько психологическая.
Осеннее обострение, амбиции и что там еще.
Есть люди, кто пишет код, а есть и другого типа.
Вот решили автоматизировать и с наворотами.
Мешают им предопределенные имена директорий
установки клиентов. Даже и не спрашиваете, почему,
если бы я сам знал. С прошлого четверга тупо психовал,
даже давление подскочило.
Даже анекдот не помогает про программиста
и вопрос сына про Солнце.
Сидит папа в глубоком дебаге, подходит сын и спрашивает, правда ли,
что Солнце каждый день встает?
Ответ папы. Если ты ,сынок, это проверил, ничего не трогай.
Есть с полсотни рабочих мест, десяток задач,
где данные с Оракл обмениваются с фоксовыми и назад.
И 7 лет это безупречно работает.
Теперь пора разбрасывать камни. Одним по балде уже получил.
Есть вопросы, на кои невозможно получить верный ответ, кроме шизы.



Исправлено 2 раз(а). Последнее : boba, 17.10.17 14:49
Ratings: 0 negative/0 positive
Re: Эксперименты с тонким клиентом Оракл
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
На самом деле тут есть твоя ошибка - в том что организационные мероприятия (установка и настройка клиентского ПО оракла) ты по своей доброте решил программными средствами - типа мы вам "как лучше". А надо было как положено - инструкция по установке и системные требования к твоей программе. Написано - "установлен и настроен ODBC драйвер к ораклу с таким-то именем, такой то версии, такими то настройками и такими-то TNS-записями" и всё. А уж как они будут это реализовывать тебя, как прикладного программиста вообще не должно беспокоить. Хотят через Ж. да флаг им в руки - пускай делают Главное вовремя снять с себя ненужную обязанность


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Эксперименты с тонким клиентом Оракл
boba
Автор

Сообщений: 6269
Откуда: Медвежьи озера-
Дата регистрации: 26.03.2001
Инструкции есть. На точках системщики попроще,
исполняют их и все. Иногда кто-то в отпуске, по телефону
за минуту -две се договоришься.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 9 (Гостей: 9)

© 2000-2024 Fox Club 
Яндекс.Метрика