-
После двух суток борьбы со сверхъестественной ситуацией, когда одни приложения и сервисы прекрасно поднимали соединения, а другой отдельно взятый сервис не мог, возвещая об ошибке (12154: Невозможно разрешить заданный идентификатор соединения), - выяснилось, что оракловский клиент не может вставить CID (грубо говоря полное имя файла приложения) в параметры соединения, по причине присутствия в нем круглых скобок. Клиент оракла: OraClient10g_Home1 Доступ через ADO, строка соединения: Provider=OraOLEDB.Oracle;Data Source=ASMPBASE;User Id=AAB;Password=123456; Победить победил конечно. :) Вопрос просто возник к более опытным, это именно в этой ситуации такой нюанс или вообще любые приложения не смогут работать с подобным путем? :)
-
> (12154: Невозможно разрешить заданный идентификатор соединения), >
А что говорит трассировка SQL*Net (если в %ORACLE_HOME%\NETWORK\ADMIN\SQLNET.ORA добавить строчки: TRACE_LEVEL_CLIENT=16 TRACE_FILE_CLIENT=C:\sqlnet.trc )
?
Обычно эта ошибка с именем файла не связана, как мне представляется
-
Мне тоже так представлялось. Грешил на отсутствие/содержимое tnsnav.ora. Трассировка умирает после Inserting CID (540) [13-НОЯ-2008 13:03:17:765] --- TRACE CONFIGURATION INFORMATION FOLLOWS ---
(540) [13-НОЯ-2008 13:03:17:765] New trace stream is c:\oracle\logs\trace\timurrv_540_1.trc
(540) [13-НОЯ-2008 13:03:17:765] New trace level is 6
(540) [13-НОЯ-2008 13:03:17:765] --- TRACE CONFIGURATION INFORMATION ENDS ---
(540) [13-НОЯ-2008 13:03:17:765] --- PARAMETER SOURCE INFORMATION FOLLOWS ---
(540) [13-НОЯ-2008 13:03:17:765] Attempted load of system pfile source C:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora
(540) [13-НОЯ-2008 13:03:17:765] Parameter source loaded successfully
(540) [13-НОЯ-2008 13:03:17:765]
(540) [13-НОЯ-2008 13:03:17:765] Attempted load of local pfile source C:\WINDOWS\system32\sqlnet.ora
(540) [13-НОЯ-2008 13:03:17:765] Parameter source was not loaded
(540) [13-НОЯ-2008 13:03:17:765]
(540) [13-НОЯ-2008 13:03:17:765] -> PARAMETER TABLE LOAD RESULTS FOLLOW <-
(540) [13-НОЯ-2008 13:03:17:765] Successful parameter table load
(540) [13-НОЯ-2008 13:03:17:765] -> PARAMETER TABLE HAS THE FOLLOWING CONTENTS <-
(540) [13-НОЯ-2008 13:03:17:765] TRACE_LEVEL_CLIENT = ADMIN
(540) [13-НОЯ-2008 13:03:17:765] TRACE_FILE_CLIENT = timurrv
(540) [13-НОЯ-2008 13:03:17:765] SQLNET.AUTHENTICATION_SERVICES = (NTS)
(540) [13-НОЯ-2008 13:03:17:765] LOG_DIRECTORY_CLIENT = c:\oracle\logs\logs
(540) [13-НОЯ-2008 13:03:17:765] TRACE_DIRECTORY_CLIENT = c:\oracle\logs\trace
(540) [13-НОЯ-2008 13:03:17:765] LOG_FILE_CLIENT = cli.txt
(540) [13-НОЯ-2008 13:03:17:765] --- PARAMETER SOURCE INFORMATION ENDS ---
(540) [13-НОЯ-2008 13:03:17:765] --- LOG CONFIGURATION INFORMATION FOLLOWS ---
(540) [13-НОЯ-2008 13:03:17:765] Log stream will be "c:\oracle\logs\logs\cli.txt.log"
(540) [13-НОЯ-2008 13:03:17:765] Log stream validation not requested
(540) [13-НОЯ-2008 13:03:17:765] --- LOG CONFIGURATION INFORMATION ENDS ---
(540) [13-НОЯ-2008 13:03:17:765] nlstdipi: entry
(540) [13-НОЯ-2008 13:03:17:765] nlstdipi: exit
(540) [13-НОЯ-2008 13:03:17:765] nigini: entry
(540) [13-НОЯ-2008 13:03:17:765] nigini: Count in the NL global area is now 1
(540) [13-НОЯ-2008 13:03:17:765] nigini: Count in NI global area now: 1
(540) [13-НОЯ-2008 13:03:17:765] nrigbi: entry
(540) [13-НОЯ-2008 13:03:17:765] nrigbni: entry
(540) [13-НОЯ-2008 13:03:17:765] nrigbni: Unable to get data from navigation file tnsnav.ora
(540) [13-НОЯ-2008 13:03:17:765] nrigbni: exit
(540) [13-НОЯ-2008 13:03:17:765] nrigbi: exit
(540) [13-НОЯ-2008 13:03:17:765] nigini: exit
(540) [13-НОЯ-2008 13:03:17:765] niqname: Hst is already an NVstring.
(540) [13-НОЯ-2008 13:03:17:765] niqname: Inserting CID.
(540) [13-НОЯ-2008 13:03:17:765] nigtrm: Count in the NI global area is now 0
(540) [13-НОЯ-2008 13:03:17:765] nrigbd: entry
(540) [13-НОЯ-2008 13:03:17:765] nrigbd: exit
(540) [13-НОЯ-2008 13:03:17:765] nigtrm: Count in the NL global area is now 0
(540) [13-НОЯ-2008 13:03:17:765] nlse_term_audit: entry
(540) [13-НОЯ-2008 13:03:17:765] nlse_term_audit: exit
Если запускать с "нормального" пути, то полет нормальный. На мысль недопустимости скобок натолкнула строчка в файле с успешной трассировкой, после niqname: Inserting CID. (668) [12-НОЯ-2008 16:56:42:343] niqname: Inserting CID.
(668) [12-НОЯ-2008 16:56:42:343] niotns: entry
(668) [12-НОЯ-2008 16:56:42:343] niotns: Not trying to enable dead connection detection.
(668) [12-НОЯ-2008 16:56:42:343] niotns: Calling address: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.254)(PORT=1521 )))(CONNECT_DATA=(SID=asmpbase)(CID=(PROGRAM=C:\gtns\g3ns.exe)(HOST=MICROSOF-E18456)(USER=SYSTEM))))
-
ради интереса запустил приложение с полным именем "D:\argoNext.Demo\BIN(1)\argonext.exe" и с "D:\argoNext.Demo\BIN(1)\argonext(1).exe" - с ораклом соединяется. в файле трассировки написано следующее: [13-NOV-2008 12:50:27:625] niotns: Calling address: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.16)(PORT=1521) ))(CONNECT_DATA=(Service_Name=XE)(SERVER=dedicated)(CID=(PROGRAM=D:\argoNext.Dem o\BIN?1?\ArgoNext.exe)(HOST=host)(USER=user)))) для первого случая и [13-NOV-2008 12:52:58:265] niotns: Calling address: (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.16)(PORT=1521) ))(CONNECT_DATA=(Service_Name=XE)(SERVER=dedicated)(CID=(PROGRAM=D:\argoNext.Dem o\BIN?1?\ArgoNext?1?.exe)(HOST=host)(USER=user)))) Оракл 10.2.0.3
-
а можешь глянуть версию Oracle Provider for OLE DB ? у меня 10.2.0.1.0
-
хотя подозреваю, что все, что 10.2.0.1, грешит подвохами... пока в интернете рылся, не раз натыкался на это утверждение, с настоятельными советами обновления до 10.2.0.2
-
> а можешь глянуть версию Oracle Provider for OLE DB ?
Установлен 10.2.0.3, но я им не пользуюсь, я по сути сразу через OCI
-
"Картина ясная!" (С) Гендальф в исполнении Гоблина будем обновиться...
-
На клиенте 10.2.0.1 твоя ситуация воспроизводится - либо патчись до 10.2.0.2(3), либо убирай скобки из полного пути к файлу (что скобки в имени файла, что скобки в пути дают один и тот же эффект)
-
Я с ораклом знаком с прошлого воскресенья только :) откуда'ж я знал :)
> либо убирай скобки из полного пути к файлу (что скобки в > имени файла, что скобки в пути дают один и тот же эффект)
та оно и понятно... пока убрал, но надо обновлятся... чувствую, что не только "фичи" не только "скобочные" могут встретиться...
-
> Доступ через ADO, строка соединения: > Provider=OraOLEDB.Oracle;Data Source=ASMPBASE;User Id=AAB; > Password=123456;
более опытные к ораклу коннектятся через DOA под Delphi и через oranet под VS P.S. на всяк, не по сабжу: если несколько инсталляций оракла на машине, как минимум в path путь к /bin желаемой д.б быть первым :)
-
> P.S. на всяк, не по сабжу: если несколько инсталляций оракла > на машине, как минимум в path путь к /bin желаемой д.б быть > первым :)
Или давать возможность явно указывать хом. Хотя тоже не всегда помогает.
Автору - лучше перейти на ODAC. Или хотя бы DOA.
-
> Автору - лучше перейти на ODAC. Или хотя бы DOA.
в чем прелести? избавит от ошибки скобок в пути приложения для клиента 10.2.0.1?
-
Нет, я, конечно, все понимаю, любимы плюшевые мишки, в обнимку с которыми лучше засыпается, любимые схемы доступа к Ораклу. Но это должно быть хоть как то обосновано. То бишь, оплеваны другие плюшевые игрушки и другие схемы доступа. Пока я не вижу препятствий для использования ADO в качестве доступа к БД. Ни один запрос не выходит за рамки SQL92/99 без каких либо акцентов на какой то конкретный диалект.
-
> Ни один запрос не выходит за рамки SQL92/99 без каких либо > акцентов на какой то конкретный диалект.
По этому поводу уже спорили :) Давай через полгодика к этому вопросу вернемся. :)
-
конечно помню, спорили (там конечно более жесткая тема затрагивалась), но почему через столько времени? :)
-
> но почему через столько времени? :)
К тому времени уж точно оценишь фичи ораклового диалекта SQL. И удобства pl/sql. И сам уже решишь - стоит универсальность того, чтобы от них отказываться.
Добро пожаловать в мир Оракла. :)
|