Конференция "Базы" » Oracle и путь к клиентскому приложению
 
  • Palladin © (12.11.08 14:52) [0]
    После двух суток борьбы со сверхъестественной ситуацией, когда одни приложения и сервисы прекрасно поднимали соединения, а другой отдельно взятый сервис не мог, возвещая об ошибке (12154: Невозможно разрешить заданный идентификатор соединения), - выяснилось, что оракловский клиент не может вставить CID (грубо говоря полное имя файла приложения) в параметры соединения, по причине присутствия в нем круглых скобок.

    Клиент оракла: OraClient10g_Home1
    Доступ через ADO, строка соединения:
    Provider=OraOLEDB.Oracle;Data Source=ASMPBASE;User Id=AAB;Password=123456;



    Победить победил конечно. :) Вопрос просто возник к более опытным, это именно в этой ситуации такой нюанс или вообще любые приложения не смогут работать с подобным путем? :)
  • Игорь Шевченко © (13.11.08 11:10) [1]

    > (12154: Невозможно разрешить заданный идентификатор соединения),
    >  


    А что говорит трассировка SQL*Net (если в %ORACLE_HOME%\NETWORK\ADMIN\SQLNET.ORA добавить строчки:
    TRACE_LEVEL_CLIENT=16
    TRACE_FILE_CLIENT=C:\sqlnet.trc
    )

    ?

    Обычно эта ошибка с именем файла не связана, как мне представляется
  • Palladin © (13.11.08 11:54) [2]
    Мне тоже так представлялось. Грешил на отсутствие/содержимое 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))))

  • Игорь Шевченко © (13.11.08 12:55) [3]
    ради интереса запустил приложение с полным именем "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
  • Palladin © (13.11.08 13:15) [4]
    а можешь глянуть версию Oracle Provider for OLE DB ?
    у меня 10.2.0.1.0
  • Palladin © (13.11.08 13:18) [5]
    хотя подозреваю, что все, что 10.2.0.1, грешит подвохами... пока в интернете рылся, не раз натыкался на это утверждение, с настоятельными советами обновления до 10.2.0.2
  • Игорь Шевченко © (13.11.08 14:28) [6]

    > а можешь глянуть версию Oracle Provider for OLE DB ?


    Установлен 10.2.0.3, но я им не пользуюсь, я по сути сразу через OCI
  • Palladin © (13.11.08 14:43) [7]
    "Картина ясная!" (С) Гендальф в исполнении Гоблина
    будем обновиться...
  • Игорь Шевченко © (13.11.08 14:47) [8]
    На клиенте 10.2.0.1 твоя ситуация воспроизводится - либо патчись до 10.2.0.2(3), либо убирай скобки из полного пути к файлу (что скобки в имени файла, что скобки в пути дают один и тот же эффект)
  • Palladin © (13.11.08 14:54) [9]
    Я с ораклом знаком с прошлого воскресенья только :) откуда'ж я знал :)


    > либо убирай скобки из полного пути к файлу (что скобки в
    > имени файла, что скобки в пути дают один и тот же эффект)

    та оно и понятно... пока убрал, но надо обновлятся... чувствую, что не только "фичи" не только "скобочные" могут встретиться...
  • Petr V. Abramov © (14.11.08 00:02) [10]

    > Доступ через ADO, строка соединения:
    > Provider=OraOLEDB.Oracle;Data Source=ASMPBASE;User Id=AAB;
    > Password=123456;

    более опытные к ораклу коннектятся через DOA под Delphi и через oranet под VS
    P.S. на всяк, не по сабжу: если несколько инсталляций оракла на машине, как минимум в path путь к /bin желаемой д.б быть первым :)
  • ANB (19.11.08 17:49) [11]

    > P.S. на всяк, не по сабжу: если несколько инсталляций оракла
    > на машине, как минимум в path путь к /bin желаемой д.б быть
    > первым :)

    Или давать возможность явно указывать хом. Хотя тоже не всегда помогает.

    Автору - лучше перейти на ODAC. Или хотя бы DOA.
  • Palladin © (19.11.08 18:06) [12]

    > Автору - лучше перейти на ODAC. Или хотя бы DOA.

    в чем прелести? избавит от ошибки скобок в пути приложения для клиента 10.2.0.1?
  • Palladin © (19.11.08 18:11) [13]
    Нет, я, конечно, все понимаю, любимы плюшевые мишки, в обнимку с которыми лучше засыпается, любимые схемы доступа к Ораклу. Но это должно быть хоть как то обосновано. То бишь, оплеваны другие плюшевые игрушки и другие схемы доступа. Пока я не вижу препятствий для использования ADO в качестве доступа к БД. Ни один запрос не выходит за рамки SQL92/99 без каких либо акцентов на какой то конкретный диалект.
  • ANB (19.11.08 19:19) [14]

    > Ни один запрос не выходит за рамки SQL92/99 без каких либо
    > акцентов на какой то конкретный диалект.

    По этому поводу уже спорили :)
    Давай через полгодика к этому вопросу вернемся. :)
  • Palladin © (19.11.08 19:24) [15]
    конечно помню, спорили (там конечно более жесткая тема затрагивалась), но почему через столько времени? :)
  • ANB (20.11.08 10:28) [16]

    > но почему через столько времени? :)

    К тому времени уж точно оценишь фичи ораклового диалекта SQL. И удобства pl/sql.
    И сам уже решишь - стоит универсальность того, чтобы от них отказываться.

    Добро пожаловать в мир Оракла. :)
 
Конференция "Базы" » Oracle и путь к клиентскому приложению
Есть новые Нет новых   [134446   +39][b:0][p:0.003]