[ОТВЕТИТЬ]
09.07.2009 14:39
kadr
 
В свете темы https://olegon.ru/showthread.php?t=6134 разбирался как малым траффиком поставить клиентскую часть от версии выше 8.1.7. Давно знал о существовании Instant Client от Oracle (пытался его прикрутить под Linux когда-то), а теперь пришлось разобраться в свете указанной проблемы.
Не забываем что на компе у нас уже установлен Oracle Reports 6i, он прекрасное работает и предыдущие версии СуперМага с ним работали тоже, т.е. необходимые базы уже прописаны, доступность БД по сети есть.

Качаем базовый комплект InstantClient 11g.
При необходимости там можно дополнительные опции к этому клиенту докачать.
На страничке закачки в самом низу есть инструкция по установке
Цитата:
Installation Steps:

1. Download the appropriate Instant Client packages for your platform. All installations REQUIRE the Basic package.

2. Unzip the packages into a single directory such as "instantclient". 3. Set the library loading path in your environment to the directory in Step 2 ("instantclient"). On many UNIX platforms, LD_LIBRARY_PATH is the appropriate environment variable. On Windows, PATH should be used.
4. Start your application and enjoy.
Типа ничего сложного
2. Распаковываем zip-архив в любую директорию на своём компе (например C:\oracle\instantclient\), если выкачивали доп. опции, то и их туда же.
3. Прописываем (методом дописывания в начало строки) в системной переменной PATH каталог, куда только что распаковали архив.
4. Типа всё должно работать.

Но у нас же СуперМаг, он так просто не сдаётся :)
После проделанных ранее шагов мы избавляемся от ошибки, которая гласит что версия клиентского ПО Oracle должна быть 8.1.7 и выше, но получаем следующюю ошибку
"База данных "MyDB" не зарегистрирована в файле TNSNAMES.ORA"
при этом в стартовом окне список БД есть, этот список от Oracle 8.0.6.

На просторах инета: и в файле ODBC_IC_Readme_Win.html , который был в архиве instantclient-odbc-win32-11.1.0.7.0.zip, скачанном "на всякий случай", встретилась рекомендация прописать переменную TNS_ADMIN.

Цитата:
Define the TNS_ADMIN to point the .ora files directory for OCI.
This needs to be set for OCI to resolve the TNS name.
If TNS_ADMIN is not set, OCI will examine an operating system dependent set of directories to find tnsnames.ora. This search path includes looking in the directory %ORACLE_HOME%/network/admin/tnsnames.ora. This is the only reason to set the ORACLE_HOME environment variable for Oracle Instant Client. If ORACLE_HOME is set when running Instant Client applications, it must be set to a directory where Instant Client exists (in this case C:\Oracle\instantclient_11_1).
Создал переменную в системных и прописал в неё каталог в котором лежит TNSNAMES.ORA (в моём случае C:\oracle\instantclient\network\admin\), но думаю что нет необходимости держать два файла одинкавого содержания, а достаточно будет прописать путь к TNSNAMES.ORA, который использовался до этого Oracle 8.0.6.
Всё, СуперМаг работает, несите пиво.
Осталось всё это заавтоматизировать и можно раскладывать.
Размер архива ~46Мб, в распакованном виде ~136Мб.
09.07.2009 15:46
OlegON
 
Цитата:
kadr Всё, СуперМаг работает, несите пиво.
Заодно и мне занесите, что я когда-то допинал разработчиков сделать поддержку TNS_ADMIN. Проблема в другом. Сейчас точно не вспомню, но вроде где-то эта поддержка не работает и Супермаг "слепнет", перестает видеть базы. По моему что-то связанное с новой установкой. Я когда СМ ставил на еще неподдерживаемую 10g, споткнулся, что не могу базу указать. Но если не ошибаюсь, можно втупую по /Oracle/network/admin положить tnsnames.ora и стартовать... Либо в реестре сбросить ключик.
09.07.2009 16:24
ReDHawK
 
kadr спасибо. Но я не вижу огромной разницы ставить Instant Client от Oracle или серверного клиента. Ну инстанс меньше места занимает, но и хлопот не меньше, а с клиентом установленным, оператор сможет на своей машине товародвижение считать (админа не отвлекать :) ).
09.07.2009 16:31
Mtirt
 
Угу, это меньше ровно в 10 раз.
Не хотите помочь? Раскидать вашего клиента, занимающего ровно полгигабайта по 40 удаленным магазинам с проблемной связью?

И про товародвижение...
А что, у вас все клиенты во всех магазинах на каждом компьютере рассчитывают товародвижение?
Как то это не соотносится с идеологией самого понятия себестоимости, и работы Супермага с нею.
09.07.2009 18:16
Busotir
 
а с сервером 9.2.0.6 инстантклиент 11-ки или 10-ки будет фурычить без проблем?
10.07.2009 12:15
mitis
 
Цитата:
Busotir а с сервером 9.2.0.6 инстантклиент 11-ки или 10-ки будет фурычить без проблем?
+1
Аналогичная ситуация... сервер стоит аля 6i, клиент есь в наличии 11.1.0.7.0
Вот хочецо узнать будут ли они дружить :)
10.07.2009 14:37
kadr
 
Цитата:
mitis +1
Аналогичная ситуация... сервер стоит аля 6i, клиент есь в наличии 11.1.0.7.0
Вот хочецо узнать будут ли они дружить :)
Некрофил? в 6-ой версии не было буковки i, она пошла только с 8-ой
12.07.2009 23:38
Busotir
 
Мдя, что за Oracle 6i? 80-х годов еще наверное... если это не репортс.*107
Так поддерживает ли этот клиент 9-ку сервер?
13.07.2009 11:06
kadr
 
не-е-е-е, клиент не может поддерживать сервер, не для того он предназначен
13.07.2009 20:34
orekhov
 
Если верить Металинку (документ 207303.1), клиент 11.1.0 поддерживает работу с сервером 9.2.0 и выше
15.07.2009 13:56
kadr
 
а вот и скрипт для автоматической установки
Код:
@echo on
rem какой путь нужно дописать в переменную Path
mkdir c:\InstClientOracle11_1
xcopy  \\server\distr\InstClientOracle11_1\*.*  c:\InstClientOracle11_1 /E /Q /R /Y /Z
set addtopath=c:\InstClientOracle11_1
rem извлечение текущего содержимого переменной Path
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции rem (ASCII-код символа после знака "равно" в выделенном фрагменте должен быть 09)
for /F "tokens=3 delims=	" %%j in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do (set curpath=%%j)
rem проверка наличия дописываемого значения в переменной Path (для избежания дублирования)
for /F %%j in ('echo %curpath% ^| find /C /I "%addtopath%"') do (set isinpath=%%j)
rem если дописываемого пути нет в переменной Path, то дополняем ее
if %isinpath% == 0 (
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d "%addtopath%;%curpath%" /f
)
rem извлекаем путь к нулевому oracle_home
for /F "tokens=3 delims=	" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0" /v ORACLE_HOME') do (set curhome=%%j)
rem записываем путь к tnsnames.ora находящемуся в нулевом oracle_home
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TNS_ADMIN /t REG_EXPAND_SZ /d "%curhome%\net80\admin" /f
Необходимо учитывать изначальные условия исполнения этого скрипта:
1. На компьютере уже установлен Oracle Reports 6i и в нем есть настроенный tnsnames
2. Часть с прописыванием переменных окружения должна исполняться с правами админа
15.07.2009 14:02
OlegON
 
Т.е. это надо запускать на клиенте? Через psexec сработает? Не пробовал? А то батничек можно накропать, чтобы по клиентам не бегать... \\server\distr\InstClientOracle11_1\*.* что там?
16.07.2009 08:44
kadr
 
расчитанно именно на psexec,
\\server\distr\InstClientOracle11_1\*.* - тут распакованный архив базового комплекта InstantClient 11g, ссылка в первом посте этот путь по желанию можно передавать параметром.
20.07.2009 12:28
kadr
 
Цитата:
orekhov Если верить Металинку (документ 207303.1), клиент 11.1.0 поддерживает работу с сервером 9.2.0 и выше
А есть ли такой документ в свободном доступе? Или более конкретный вопрос: с 8-кой какой инстант клиент работает?
20.07.2009 13:21
kadr
 
Т.к. 8-ые сервера есть, то взял более старшего клиента 10.2.0.4 (на той же странице что и 11g), проверил 10-ый цепляется к 8-ым серверам, 11-ый же честно признавался что подключение к серверу с версией 8.1.6.3.8 он не поддерживает
22.07.2009 13:45
orekhov
 
Клиент 10.2.0 официально поддерживал сервер 8.1.7, и затем начиная с 9.2.0
22.07.2009 15:48
kadr
 
Поглядел ноту с Металинка, как я понял упоминается полноценный клиент, при этом если клиентом 10.2.0 цепляться, то должен выдавать ошибку ORA-3134.
Я же использую инстант клиента, а он в свою очередь не выдаёт подобной ругани, посмотрим как всё это работать будет
26.07.2009 09:34
Busotir
 
А если клиент 10-ки может работать с 9-кой, ОЕМ 10-ки в составе клиента тоже будет корректно работать с базой 9-ки (9.2.0.6)?
27.07.2009 10:09
kadr
 
Цитата:
kadr Поглядел ноту с Металинка, как я понял упоминается полноценный клиент, при этом если клиентом 10.2.0 цепляться, то должен выдавать ошибку ORA-3134.
Я же использую инстант клиента, а он в свою очередь не выдаёт подобной ругани, посмотрим как всё это работать будет
Всего-то надо было залогиниться под правильными учётными данными чтобы получить законный ответ ORA-3134 при попытке подключения инстантклиентом 10-ки к базе 8.1.6.3.
Итого:
1. Если сервер БД версии 8.1.6, то клиент должен быть 9-ым, если ниже, то СуперМаг ругается, если выше, то клиент не подцепится
2. Если сервер БД 9.2.0.8 (среди 9-го семейства никак не ниже), то клиент может быть любым начиная с 9.2.0.1, тогда и СуперМаг принмимает его и клиент успешно цепляется к базе не жалуясь на то что версия сервера не поддерживается.
13.09.2009 22:36
kwadrox
 
Спасибо всем....дня два намучался с этим вопросом....пока не зашел в эту тему....:)
22.10.2009 09:16
kadr
 
Внимание, указанная версия 11-го инстантклиента является бетой, мы столкнулись с такой проблеммой что на некоторых компьютерах с установленным 11-ым клиентом комп при загрузке очень активно что-то пытается получить по сети, даже рабочий стол не может загрузить нормально, все условия приводящие к этому не смогли отловить, но факт остается фактом, на некоторых компах с 11-ым все прекрасно работает, а на некоторых ловим заивсания. При замене на 10-го, простой заменой содержимого соответствующего каталога, зависания прекращаются.
Опции темы


Часовой пояс GMT +3, время: 01:50.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.