Tnsnames oracle где лежит

Обновлено: 07.07.2024

В этой заметке я расскажу как установить и настроить oracle-клиент в ОС Windows. Плюс немного расскажу об инструменте, который можно использовать для работы с СУБД.

Т.к. в конечном итоге у нас задача написать Windows приложение в Delphi, то далее описываемые мной действия относятся в основном к Windows 7. Если у Вас Windows XP, то отличия будут минимальны.

Описываемые далее действия Вы можете выполнить либо для хост-системы, либо для другой виртуальной машины с установленной ОС Windows. Версия и разрядность ОС принципиального значения не имеют.

Настройка файла hosts (не обязательно)

Для удобства можно дописать в файл hosts такую строку:

Это позволит использовать указанное имя oracle вместо указанного IP адреса при подключении к серверу. Например, вместо ping 192.168.56.101 можно будет писать ping oracle, результат будет одинаковым.

Уcтановка Oracle Instant Client

HINT: Даже если у вас ОС 64-битная, всё равно качаем 32-битную версию клиента; в будущем, если Вы будете делать сборки приложений под Win64, то можно также скачать и Win64 версию клиента.

Скачиваем zip-архив, однако из всего архива нам достаточно будет извлечь всего три файла (это легко выявляется экспериментальным путём):

  • oci.dll
  • orannzsbb11.dll
  • oraociicus11.dll

Сохраняем их в отдельный каталог, например в C:\Oracle\InstantClient.

Настройка Oracle Instant Client

image

image

Сохраняем изменения (ОК), для Windows XP Sp2 и ниже необходимо сделать выход из системы, чтобы эти переменные применились (ну или перезагрузить компьютер), для Windows XP Sp3 и Windows7 эти настройки применяются к текущему окружению сразу же (нужно лишь перезапустить файловый менеджер или проводник).

В принципе, на этом настройка Oracle Instant Client завершена, однако для удобства сделаем ещё одну вещь.

Настройка файла tnsnames.ora (не обязательно)

Создаём обычный текстовый файл под названием tnsnames.ora и сохраняем в каталог, на который ссылается переменная TNS_ADMIN. У нас этот файл будет содержать всего одну строку:

У меня приведён вариант с использованием упрощённого синтаксиса:

Подключаемся к БД и выполняем запросы

image

Если же Вы не редактировали файл hosts и не создавали файл tnsnames.ora, то можно указать такие параметры:

image

Кнопка Test проверяет, можно ли подключиться к БД. Кнопка Save сохраняет введённые параметры в список слева. Кнопка Connect выполняет подключение к БД и закрывает диалог.

Выполняем простейший запрос:

И нажимаем F5, должно получиться примерно следующее:

image

Постскриптум

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

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

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

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

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

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

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

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

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

Filter Dialog

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

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

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

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

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

по умолчанию 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 при подключении.

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

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

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

О настройке доступа к СУБД Oracle, который хранится в файле tnsnames.ora известно каждому, кто работал с этим типом СУБД.

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

Решений предложить можно множество, включая редиректы, алиасы и т.п.

Я здесь опишу как установить и настроить единое хранилище для разрешения имен баз данных с помощью Oracle Internet Directory OID, и как обращаться за разрешением имен по LDAP-протоколу. Это гораздо удобнее, чем держать актуальным файл tnsnames.ora в сотни мест.

Установка и настройка СУБД для БД репозитория OID здесь не описывается, указываются ключевые моменты важные именно для этой конфигурации. С лицензионной политикой компании Oracle в части продуктов RDBMS Database, Oracle Fusion Middleware и Oracle Internet Directory вы можете ознакомится на сайте компании.

Установка ПО

Для установки Standalone сервера (под управлением NodeManager) были взяты следующие версии дистрибутивов, актуальные на момент настройки:

JAVA: jdk-8u171-linux-x64.tar.gz
OID: fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip
RDBMS: 12.1.0.2 +PSU +Opatch актуальных версий

Устанавливаем ПО для репозитария, в котором будут храниться схемы OID

СУБД версии 12.1.0.2+PSU
БД. Созадем «пустую» БД:
Необходимо указать
кодировка AL32UTF8, включить ORACLE TEXT в установку ПО
параметры БД:
open_cursors=800
processes=500

Дополнительно потребовалось прогнать скрипт xaview.sql, что выяснилось на этапе проверки установки OID.
конфигурируем и поднимаем LISTENER для базы данных.

Итак, пустая БД создана uhost-oid1:1521/oid1 (в данном случае oid1- SID БД) и готова к созданию в ней репозитария.

Установка OID

Здесь и далее домашний каталог пользователя oracle — /u/app/oracle
Распаковываем java и задаем переменную JAVA_HOME

Получается файл ./fmw_12.2.1.3.0_oid_linux64.bin

Проверяем, что он исполняемый, если это не так делаем


(предварительно должны быть настроен проброс X-сервера), запустится java-based инсталлятор.

В качестве ORACLE_HOME было указано:

По этому пути установится ПО для oracle fusion middleware (FMW) и Oracle Internet Directory.

На этапе «тип инсталляции» указываем STANDALONE.


Создаем репозитарий (необходимые схемы в БД)

Создаем схемы для репозитария в БД, для этого запускаем rcu


На этом этапе создаются схемы ODSSM, ODS и DEV_STB (запоминаем пароль, он потребуется при настройке компонентов домена)

Создаем домен, в котором у нас будет работать OID (домен в терминах FMW)


Домен создаем в отдельную от ПО папку. Например указываем так:



Для коннекта к БД указываем параметры ранее созданных схем (и паролей)
При установке задаем логин и пароль для NodeManager (будет в дальнейшем использоваться для коннекта к NodeManager и запуска/останова через него самого OID)

Запуск NodeManager

Для запуска NodeManager нужно сгенерировать файл с ключами: DemoIdentity.jks. (Если кроме установки OID вы поставите обновления, то возможно этот шаг не понадобится)
Генерировать будем «умолчательный», что бы пока не мучатся с параметрами загрузки хранилища ключей в конфиге домена. С такими параметрами работает – это пароль для хранилища по умолчанию:


(обязательно с точкой, по-другому не работает)
Переходим в директорию, в которой должен храниться файл:


Нужно, чтобы сконфигурировать сам OID, иначе домен не сможет подключиться к БД репозитария (см.Проблема1)


нужен для того, чтобы нашлись нужные библиотеки и подтянулись из нужного ORACLE_HOME

Если что, проверяем с помощью ldd куда смотрят:


Должно быть на ORACLE_HOME с ПО FMW:


Ошибки, если это не так, см. в разделе Проблема2


Убедимся, что NodeManager запущен.
Логи и конфигурация: /u/app/oracle/config/domains/oid_domain/nodemanager

Проблема1:


Решение1: Идем и генерируем DemoIdentity.jks, как описано выше

Проблема2:


Решение2: устанавливаем переменную TNS_ADMIN и проверяем корректность логина/пароля

Первичная конфигурация OID

К этому моменту должны быть выставлены переменные
TNS_ADMIN
LD_LIBRARY_PATH
Предполагается, что NodeManager уже запущен.
Запускаем утилиту WLST:


Довыставляем переменные, которые нужны для работы утилиты WLST


дальше с помощью утилиты WLST подключаемся к NodeManager. Нам потребуется логин и пароль, заданные при инсталляции (указанные для NodeManager, у нас это weblogic)


Пример вывода:


Запускаем инициализацию, во время которой создается инстанс с именем oid1.
В строке ниже:

odsPassword – пароль к схеме ODS на базе репозитория, который был задан при выполнении ./rcu
orcladminPassword – пароль который будет использован в качестве cn=orcladmin для доступа к LDAP
realmDN – LDAP –схема, которая будет сконфигурирована


После выполнения должен будет создан компонент (инстанс в терминах FMW) с именем oid1

Проблема3:
Лог /u/app/oracle/config/domains/oid_domain/servers/OID/logs/oid1/oidmon*.log
содержит


Решение3:
Задаем переменную окружения
LD_LIBRARY_PATH=/u/app/oracle/product/middleware/Oracle_IDM1/lib:$LD_LIBRARY_PATH
перезапускаем NodeManager,
запускаем компонент:


Если компонет по этой причине создался но не работает, то убиваем процесс oidmon, изменяем в СУБД параметры статуса процесса:


Возможно, придется еще раз выполнить инициализацию oid_setup
Проблема4. При попытке сохранения в NetManager:



Решение4:
Еще раз прогнать oid_setup
Проверить настройки ldap.ora на клиенте с которого запускается Net Manager
DEFAULT_ADMIN_CONTEXT = «dc=mycompany,dc=ru»

Изменение параметра OID (для разрешения запросов от анонимных пользователей)
Когда создается TNS-имя с помощью net manager, но не работает tnsping.
Создаем файл:
cat anonymousbind.ldif


и модифицируем параметры с помощью этого файла:


Диагностика:
tnsping mytest не работает, a ldapsearch работает
Проверяем доступность портов 3060 и 3131(для SSL)

так все работает (с указанием пароля)


mytest – созданный ранее псевдоним.

Настройки клиента

На стороне клиента в $ORACLE_HOME/network/admin ложатся файлы:
ldap.ora
sqlnet.ora
tnsnames.ora

Файл tnsnames.ora содержит «локальные» алиасы, как обычно, и используется, если не найдено имя в LDAP.
Файл sqlnet.ora содержит описание порядка резолва:

sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,LDAP)

Параметры доступа к файлу LDAP задаются в ldap.ora

В описанной конфигруации используется следующий порядок.

Сначала просматривется файл tnsnames.ora, если запись там не нашлась, то спрашиваем у LDAP (если нужно сменить порядок, меняем порядок в параметре NAMES.DIRECTORY_PATH

Далее идет запрос к основному серверу LDAP, если он недоступен по каким-то причинам, идем ко второму серверу в списке DIRECTORY_SERVERS

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

По этой же причине не рекомендуется в записи алиаса использовать точку, он ее воспринимает как домен.

Предполагается, что вы установили инструмент PLSQL-Developer, и я полагаю, что каждый установит программу PLSQL.

Обычное окно входа в систему:


Когда ваша фотография:


Без этой опции вы не сможете подключиться к базе данных. Если Oracle не установлен, будет еще одна опция «подключиться как». Если вы устанавливаете клиент Oracle, пожалуйста, проигнорируйте эту возможность, потому что инструмент PLSQL автоматически обнаружит, есть ли Oracle из системного реестра. Если информация о конфигурации отсутствует, отображается первое изображение и второе изображение (возможно, отдельные машины не отображаются, даже если установлен клиент Oracle, поэтому вам нужно вручную добавить файл конфигурации параметров Oracle), как это сделать? Нет необходимости устанавливать клиент Oracle для достижения соединения с базой данных

Сначала откройте интерфейс PLSQL, чтобы открыть окно входа в систему.В настоящее время вы не можете ввести правильное имя пользователя и пароль, а также IP-адрес и номер порта, но когда вы нажимаете OK, появляется следующий рисунок, как показано на первом рисунке ниже. Или настройки инструмента PLSQL настроены неправильно. Поэтому нажмите «Отмена», PLSQL автоматически откроет программное обеспечение, как показано на втором рисунке ниже. Вы увидите верхний левый угол программного обеспечения, который указывает, что вы не вошли в систему.



клиент Oracle установлен неправильно


Нажмите Отмена, войдите в интерфейс программного обеспечения без входа в систему.


Нажмите Инструменты → Настройки → Подключиться → Заполните эти два элемента:
Имя домашнего каталога Oracle: заполните каталог, в котором установлен Oracle
Библиотека OCI: введите путь к файлу плюс /oci.dll



Заполните каталог хранилища оракула и отобразите:


Применить, определить:



При повторном открытии программы PLSQL, если вы видите интерфейс, показанный на рисунке ниже, вы заметите, что есть дополнительная опция «подключиться как»

Пользователи, которые не устанавливают Oracle локально, должны загрузить InstantClient (даже если клиент), путь указан здесь, чтобы использовать его нормально

Распакуйте в D: \ Oracle \ instantclient_11_2 (каталог, который вы определили)

каталог оракула указывает на каталог этого клиента

Добавить другую конфигурацию tnsnames.ora
Создайте новую сетевую папку в каталоге клиента мгновенного доступа, создайте нового администратора в сети и создайте файл с расширением .ora в каталоге администратора: tnsnames.ora

Блокнот открывается, и содержимое добавляется следующим образом:


orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1 )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl )
)
)


test-name =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10 )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

Одно из следующих test-name изменяется на имя, которое вы хотите видеть в окне отображения входа в систему, HOST изменяется на IP базы данных, к которой вы хотите подключиться

Читайте также: