Oracle-какой файл TNS Names я использую?

Иногда я получаю проблемы с подключением Oracle, потому что я не могу понять, какие tnsnames.ora файл, который использует мой клиент базы данных.

Как лучше всего это понять? ++happy для различных решений платформы.

11 ответов

  1. для Linux:

    $ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'open.*tnsnames.ora'
    

    показывает что-то вроде этого:

    open("/opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora",O_RDONLY)=7
    

    Изменение на

    $ strace sqlplus -L scott/tiger@orcl 2>&1| grep -i 'tnsnames.ora'
    

    покажет все пути к файлам, которые не удалось.

  2. Не должно ли это всегда быть » $ORACLE_ HOME/network/admin / tnsnames.ora»?
    Тогда вы можете просто сделать «echo $oracle_ home» или эквивалент * nix.

    @Pete Holberton
    Вы совершенно правы. Что напоминает мне, есть еще один разводной ключ в работах под названием TWO_ TASK

    Согласно http://www.orafaq.com/wiki/TNS_ADMIN
    Tns_admin-это переменная среды, указывающая на каталог, в котором находятся файлы конфигурации SQL*Net (например, sqlnet.ora и tnsnames.ora) расположены.

  3. Для Windows: Filemon из SysInternals покажет вам, какие файлы доступны.

    Не забудьте установить фильтры, чтобы не перегружаться трафиком файловой системы chatty.

    Диалоговое Окно Фильтра

    Добавлено: Filemon не работает с более новыми версиями Windows, поэтому вам, возможно, придется использовать Process Monitor .

  4. Oracle предоставляет утилиту под названием tnsping:

    R:\>tnsping someconnection
    
    TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
    08 10:38:07
    
    Copyright (c) 1997 Oracle Corporation.  All rights reserved.
    
    Used parameter files:
    C:\Oracle92\network\ADMIN\sqlnet.ora
    C:\Oracle92\network\ADMIN\tnsnames.ora
    
    TNS-03505: Failed to resolve name
    
    R:\>
    
    
    R:\>tnsping entpr01
    
    TNS Ping Utility for 32-bit Windows: Version 9.0.1.3.1 - Production on 27-AUG-20
    08 10:39:22
    
    Copyright (c) 1997 Oracle Corporation.  All rights reserved.
    
    Used parameter files:
    C:\Oracle92\network\ADMIN\sqlnet.ora
    C:\Oracle92\network\ADMIN\tnsnames.ora
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = **)
     (PROTOCOL = TCP) (Host = ****) (Port = 1521))) (CONNECT_DATA = (SID = ENTPR0
    1)))
    OK (40 msec)
    
    R:\>
    

    Это должно показать, какой файл вы используете. Утилита находится в каталоге Oraclebin.

  5. Есть еще одно место, где хранится расположение TNS: если вы используете Windows, откройте regeditи перейдите тудаMy HKEY Local Machine/Software/ORACLE/KEY_OraClient10_home1, где KEY_OraClient10_home1находится ваш Oracle home. Если вызывается запись stringTNS_ADMIN, то значение этой записи будет указывать на файл TNS, который Oracle использует на вашем компьютере.

  6. По умолчанию tnsnames.ora находится в каталоге $ORACLE_HOME/network/admin в операционных системах UNIX и каталоге ORACLE_HOME\network\admin в операционных системах Windows. tnsnames.ora также может храниться в следующих местах:

    Каталог, указанный переменной среды TNS_ADMIN (или значением реестра)

    В операционных системах UNIX-глобальный каталог конфигурации. Например, в операционной системе Solaris этот каталог является /var / opt/oracle

    Если у вас есть несколько ORACLE_HOMES, имейте в виду, какой из них вы используете, как расположение tnsnames.файл ora может варьироваться от одного ORACLE_HOME до следующего.

    Для человека, упомянувшего переменную среды TWO_TASK, которая используется для установки имени службы базы данных по умолчанию для подключения (которая может быть базой данных на другом сервере). Имя службы, заданное значение TWO_TASK, затем ищется в tnsnames.файл ora при подключении.

  7. Codeslave спрашивает «не должно ли это всегда быть» $ORACLE_ HOME/network/admin / tnsnames.ora»? Ответ-Нет, это не так. Рассмотрим эти два вызова tnsping на одной машине:

    C:\Documents and Settings\me>D:\Oracle.2.0_DB\BIN\tnsping orcl
    
    TNS Ping Utility for 32-bit Windows: Version 10.2.0.4.0 - Production on 09-OCT-2
    008 14:30:12
    
    Copyright (c) 1997,  2007, Oracle.  All rights reserved.
    
    Used parameter files:
    D:\Oracle.2.0_DB\network\admin\sqlnet.ora
    
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx
    )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
    
    OK (40 msec)
    
    C:\Documents and Settings\me>tnsping orcl
    
    TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 09-OCT-2
    008 14:30:21
    
    Copyright (c) 1997, 2005, Oracle.  All rights reserved.
    
    Used parameter files:
    D:\oracle.2.0_Client\network\admin\sqlnet.ora
    
    
    Used TNSNAMES adapter to resolve the alias
    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
    (HOST = XXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
    OK (20 msec)
    
    C:\Documents and Settings\me>
    

    Обратите внимание на два разных расположения файлов параметров, которые зависят от того, какой исполняемый файл tnsping вы запускаете (и, возможно, откуда он запускается). Для сетей oracle на основе tnsnames использование переменной TNS_ADMIN является единственным способом обеспечить получение согласованных tnsnames.файл Оры. (Примечание: Windows-центральный ответ)

  8. На моей машине разработки у меня есть три различные версии программного обеспечения клиента Oracle. Я управляю tnsnames.oraфайлом в одном из них. В двух других я ввел в tnsnames.oraфайл:

    ifile=path_to_tnsnames.ora_file/tnsnames.ora
    

    Таким образом, если по какой-то причине tnsnames.oraклиент использует неправильный файл, он всегда будет находиться в актуальной версии.

  9. Самый простой способ, вероятно, проверить переменную среды PATH процесса, который подключается к базе данных. Скорее всего, tnsnames.файл ora находится в первом каталоге Oracle bin в path ..\network\admin. Переменная среды TNS_ADMIN или значение в реестре (для текущего Oracle home)может переопределить это.

    Использование filemon, как предлагают другие, также сделает трюк.

  10. strace sqlplus -L scott/tiger@orcl помогает найти .tnsnames.oraфайл на/home/oracle, чтобы найти файл, который он принимает вместо $ORACLE_HOME/network/admin/tnsnames.oraфайла. Спасибо за публикацию.

  11. Не прямой ответ на ваш вопрос, но я был очень разочарован, пытаясь найти и обновить все файлы tnsnames, так как у меня было несколько установок oracle: Client, BI tools, OWB и т.д., Каждый из которых имел свой собственный oracle home. В итоге я создал утилиту TNSNamesSync, которая обновит все имена tnsnames во всех домах oracle. Это под лицензией MIT, свободно использовать здесь https://github.com/artybug/TNSNamesSync/releases

    Документы здесь:
    https://github.com/artchik/TNSNamesSync/blob/master/README.md

    Это только для Windows, хотя.