WEB-приложение Сведение отчетности   (14.07.2012)
Нет соединения с БД при установке

Описание проблемы:В процессе работы инсталлятора при вводе правильных значений в поля "База данных", "Пользователь" и "Пароль" выдается сообщение "Ошибка соединения с БД".

Во-первых, необходимо убедиться в том, что база данных на сервере Oracle доступна и находится в состоянии Open. Проще всего в наших конкретных условиях попытаться начать сеанс работы с системой Парус 8 (с любого другого компьютера, или непосредственно с web-сервера, если на нем установлена клиентская часть ПП Парус 8). Если начало сеанса проходит успешно, то идем дальше.

Для соединения с Oracle (и инсталлятором, и сервисом) используются библиотека OCI.DLL и файл tnsnames.ora, принадлежащие каталогу Oracle по умолчанию. Это становится актуально в случае, если на машине установлено одновременно несколько каталогов Oracle, или если какой-либо из каталогов Oraclе был некорректно удален. В любом случае, проблему легко исправить. Необходимо запустить редактор реестра Windows (regedit.exe) и убедиться в правильности следующих настроек:

HKEY_LOCAL_MACHINE --> SOFTWARE --> ORACLE -- > ALL_HOMES

Параметр HOME_COUNTER определяет количество установленных каталогов Oracle. Менять его не рекомендуется.

Параметр DEFAULT_HOME определяет имя каталога Oraclе по умолчанию (того самого, который нам нужен).

Дочерними к текущей ветке реестра являются ветки, описывающие каталоги Oracle. Они называются обычно ID0, ID1, ID2 и так далее. В каждой из них присутствуют: параметр NAME определяет имя каталога Oracle; параметр PATH определяет путь к физическому каталогу Oracle на диске.

Что должно быть? В параметре HOME_COUNTER должно содержаться количество реально зарегистрированных в реестре каталогов Oracle. В параметре DEFAULT_HOME должно содержаться имя (значение параметра NAME) того каталога, который мы будем использовать. Путь к физическому каталогу (параметр PATH) этого каталога Oracle должен быть валидным и указывать на правильную версию Oracle (не ниже 9.2.0.1) (например, C:\oracle\ora92).

Каталоги Oracle настроены правильно, однако соединения все равно не происходит. Необходимо проверить наличие алиаса БД в файле tnsnames.ora. Этот файл можно найти в подкаталоге NETWORK\ADMIN каталога, на который указывает параметр PATH текущего каталога Oracle (в нашем примере - C:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora). Этот файл содержит список записей следующего вида:

Имя_базы_данных =

(DESCRIPTION =

   (ADDRESS_LIST =

    ; (ADDRESS = (PROTOCOL = TCP)(HOST = IP-адрес сервера БД) (PORT = Порт для соединения с Oracle))

   )

   (CONNECT_DATA =

     (SERVICE_NAME = SID_базы данных)

   )

)

Например,

ORADB =

(DESCRIPTION =

   (ADDRESS_LIST =

   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))

   )

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = ORADB_TEST)

   )

)

Необходимо убедиться в том, что псевдоним соединения с базой данных (который вы используете в поле База данных задан в этом файле и задан правильно. Можно проверить соединение при помощи утилиты tnsping.exe в каталоге BIN (в нашем случае - C:\oracle\ora92\bin\tnsping.exe):

TNSPING

На последней строке протокола на рисунке показано сообщение "OK" и время обмена пакетами. То есть на рисунке - все в порядке.

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