Tnsnames ora где лежит linux
Перейти к содержимому

Tnsnames ora где лежит linux

  • автор:

Настройка сети (Настройка слущающего процесса Listener)

2 конфигурационных файла отвечают за подключение к Oracle.
Один обязательный (listener.ora) и один скорее для удобства, но для работы некоторых программ, он также может быть обязательным (tnsnames.ora).

По умолчанию файлы хранятся:

listener.ora

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.com)(PORT = "port_number")) ) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = SID1) (ORACLE_HOME = /u01/app/oracle/product/11.2) (SID_NAME = SID1) ) (SID_DESC = (GLOBAL_DBNAME = SID2) (ORACLE_HOME = /u01/app/oracle/product/11.2) (SID_NAME = SID2) ) ) 

tnsnames.ora

В данном файле описываются подробности подключения к базе данных. Т.о, становится возможным явно не указывать некоторые параметры. (Например, хост, порт и др.). И сразу обращаться по имени.

SID1 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.com)(PORT = "port_number")) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = SID1) ) ) SID2 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname.domain.com)(PORT = "port_number")) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = SID2) ) ) 
// Должен работать (Но это не точно) $ tnsping SID2 

В следующем примере, происходит подключение к базе данных с использованием записи с именем orcl в файле tnsnames.ora.

Т.е. для подключения к базе, не приходится дополнительно вводить host, port, sid

tnsnames.ora

Основные команды службы слушателя (Listener):

$ lsnrctl status $ lsnrctl stop $ lsnrctl start $ lsnrctl restart 

Информация о Listener из командной строки:

$ ps -edf | grep tns root 13 2 0 Aug09 ? 00:00:00 [netns] oracle12 6604 1 0 Aug09 ? 00:00:02 /u01/oracle/grid/12.1/bin/tnslsnr LISTENER -no_crs_notify -inherit oracle12 16991 14456 0 09:26 pts/1 00:00:00 grep tns 
$ lsnrctl services LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 15-AUG-2015 15:09:04 Copyright (c) 1991, 2014, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) Services Summary. Service "+ASM" has 1 instance(s). Instance "+ASM", status READY, has 1 handler(s) for this service. Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER Service "orcl12XDB" has 1 instance(s). Instance "orcl12", status READY, has 1 handler(s) for this service. Handler(s): "D000" established:0 refused:0 current:0 max:1022 state:ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=piter.localdomain)(PORT=60254)) Service "slave" has 1 instance(s). Instance "orcl12", status READY, has 1 handler(s) for this service. Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER Service "slave_DGB" has 1 instance(s). Instance "orcl12", status READY, has 1 handler(s) for this service. Handler(s): "DEDICATED" established:0 refused:0 state:ready LOCAL SERVER The command completed successfully 

Информация о Listener из консоли sqlplus:

SQL> show parameter local_listener; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string LISTENER_ORCL12 
SQL> show parameter listener NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ listener_networks string local_listener string remote_listener string 
SQL> alter system set local_listener='(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = moscow.localdomain)(PORT = 1521)))' scope=both; 

OFFTOPIC Listener для grid

$ srvctl status listener Listener LISTENER is enabled Listener LISTENER is running on node(s): piter 
$ srvctl config listener Name: LISTENER Type: Database Listener Home: /u01/oracle/grid/12.1 End points: TCP:1521 Listener is enabled. 

Способ настроить tnsnames, предложенный в чате:

connect / as sysdba alter session set container=pdb_a; alter system register; 

После этого она зарегается в листенере, если до этого её не было.

В tnsnames.ora: (ip адрес только поправь)

pdb_a = (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=10.1.1.14) (PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=pdb_a))) 

Tags: Oracle Database, Network, Listener

Single DataGuard RAC

Oracle DBA

Собираем также материалы по: SQL & PL/SQL

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

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

UNIX/Linux tnsnames.ora location Tips

Answer: The tnsnames.ora file in UNIX/Linux is by default in the $ORACLE_HOME/network./admin.tnsnames.ora.

According to the docs, the precedence in which SQL*Net determines the location of the tnsnames.ora file.

Configuration files and the tnsnames.ora location is resolved in the following order:

1. SQL*Net files in present working directory (PWD/CWD)

2. TNS_ADMIN set for each session or by a user-defined DOS script

3. TNS_ADMIN set as a Windows global environment variable

4. TNS_ADMIN as defined in the registry

5. Oracle Net files in %ORACLE_HOME\network\admin

6. (Oracle default location)

Hypercharge Oracle on Linux!

The landmark book «Linux for the Oracle DBA» is a complete guidebook of expert tips and secrets for automating Oracle database administration. It’s packed with working Linux scripts and tools to make any DBA look like a guru.

Burleson is the American Team

Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals. Feel free to ask questions on our Oracle forum .

Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.

Errata? Oracle technology is changing and we strive to update our BC Oracle support information. If you find an error or have a suggestion for improving our content, we would appreciate your feedback. Just e-mail:

and include the URL for the page.


Burleson Consulting

The Oracle of Database Support

Copyright © 1996 — 2020

All rights reserved by Burleson

Oracle ® is the registered trademark of Oracle Corporation.

Почему не соединяется клиент с базой данных Oracle?

Добрый всем! Выручайте, проблема такая. Есть сервер Oracle 11G enterpise, он установлен на операционной системе Centos 6. База данных запущена и функционирует на нем. Открыл порты 1158 и 1521. На другую машину Windows7 был установлен Оracle client. В файле /etc/hosts на Centos и в файле c. etcdriverhosts на Windows соответственно, прописан мой тестовый сервер centos6.dbaora.com. Пинг от Windows7 до Centos6 проходит по имени сервера. Так вот когда в клиенте Oracle пытаюсь подключиться через Oracle Net Configuration Assistan то пишет ошибка соединения при этом логин и пароль ввожу верный. В чем может быть проблема? Спасибо. P.s добавил скриншоты и логи.
pastebin.com/auMFPKeg
pastebin.com/LNsFWYEM
12001cd0e0a6.pngb655cfdbf6ea.png2253cfc2954c.png 412d44a79cf8.png

  • Вопрос задан более трёх лет назад
  • 2864 просмотра

1 комментарий

Оценить 1 комментарий

Для начала проверьте с клиента: telnet centos6.dbaora.com 1521
Решения вопроса 0
Ответы на вопрос 1

По пунктам:
1. Пробуй подключиться к БД локально (подключаешься по SSH, в командной строке su — oracle, прыгаешь в папку размещения sqlplus, запускаешь sqlplus /nolog, далее conn / as sysdba, вводишь пароль SYS’a.
Если, ОК значит БД может принимать подключения.
Заодно проверь, что экземпляр запущен.
2. Там же из SSH пробуй подключиться через листенер (sqlplus /nolog, вводишь sys@имя_БД, если получишь приглашение на ввод пароля, то всё ОК.
3. Если нет, то tnsping имя_БД. Если пинга нет, то настраивай tnsnames.ora. Рекомендую хранить только один экземпляр файла с таким именем на хосте. Путь к файлу можно задать через переменную окружения TNS_ADMIN.
4. Если в п.2. ОК, то повтори п.3 с удаленного хоста.
5. Если в п.4. ОК, то выгони инопланетян из компьютера)
6. Если в п.4 не ОК. Пробуй сначала «telnet имя_хоста 1521». Есть приглашение — есть доступ к хосту. Нет приглашения — кури файрвол.
7. Если есть доступ к хосту и нет связи, настраивай удаленный tnsnames.ora. Рекомендации теже.

tnsnames.ora расположен в ORA_HOME/NETWORK/ADMIN или по пути в переменной окружения TNS_ADMIN.

Вот пример одной настройки из файла
Имя_БД=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=IP_хоста_или_доменное_имя)(PORT=1521))
(CONNECT_DATA=(SID=SID_БД)(SERVER=DEDICATED))
)
SID_БД можно глянуть командой lsnrctl status в командной строке по SSH

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

linux

  • Linux
  • +2 ещё

Есть утилита для мониторинга UPS?

  • 2 подписчика
  • 6 часов назад
  • 95 просмотров

Установка и настройка Oracle Internet Directory для разрешения имен баз данных

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

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

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

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

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

Установка ПО

Установка ПО производилась на ОС Linux (SUSE Linux Enterprise Server 11 ), для вашей ОС необходимо сверится с матрицей совместимости на сайте oracle.com.

Для установки 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

unzip jdk-8u171-linux-x64.tar.gz export JAVA_HOME=/u/app/oracle/jdk1.8.0_171
unzip fmw_12.2.1.3.0_oid_linux64_Disk1_1of1.zip

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

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

chmod +x 
./fmw_12.2.1.3.0_oid_linux64.bin

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

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

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

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

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

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

cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/bin/ ./rcu.sh 

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

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

cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin ./config.sh 

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

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

Запуск NodeManager

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

cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin 
. setWlstEnv.sh 

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

cd /u/app/oracle/config/domains/oid_domain/security java utils.CertGen -keyfilepass DemoIdentityPassPhrase -certfile democert -keyfile demokey -strength 1024 -noskid java utils.ImportPrivateKey -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase -keyfile demokey -keyfilepass DemoIdentityPassPhrase -certfile democert.pem -keyfile demokey.pem -alias demoidentity 

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

export TNS_ADMIN=/u/app/oracle/config/domains/oid_domain/config/fmwconfig/components/OID/config 

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

export LD_LIBRARY_PATH=/u/app/oracle/product/middleware/Oracle_IDM1/lib:$LD_LIBRARY_PATH 

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

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

ldd /u/app/oracle/product/middleware/Oracle_IDM1/bin/oiddispd

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

libclntsh.so.12.1 => /u/app/oracle/product/middleware/Oracle_IDM1/lib/libclntsh.so.12.1

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

cd /u/app/oracle/config/domains/oid_domain/bin/ ./setStartupEnv.sh – выставляет доп. переменные окружения ./startNodeManager.sh & 

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

Проблема1:

Jun 22, 2018 10:27:58 AM MSK Fatal error in NodeManager server weblogic.nodemanager.common.ConfigException: Identity key store file not found: /u/app/oracle/config/domains/oid_domain/security/DemoIdentity.jks 

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

Проблема2:

Jun 28, 2018 12:20:08 PM MSK INFO /u/app/oracle/config/domains/oid_domain>>  

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

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

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

cd /u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin export MW_HOME=$ORACLE_HOME 

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

./setHomeDirs.sh ./setWlstEnv.sh ./wlst.sh 

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

nmConnect(username='weblogic',password='пароль от NodeManager ',domainName='oid_domain') 

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

[13:45][uhost-oid1.oracle.:/u/app/oracle/product/middleware/Oracle_IDM1/oracle_common/common/bin]$ ./wlst.sh Initializing WebLogic Scripting Tool (WLST) . Welcome to WebLogic Server Administration Scripting Shell Type help() for help on available commands wls:/offline> nmConnect(username='weblogic',password='*****',domainName='oid_domain') Connecting to Node Manager . Successfully Connected to Node Manager. 

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

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

oid_setup(orcladminPassword='****',odsPassword='***',realmDN='dc=mycompany,dc=ru')

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

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

/u/app/oracle/product/middleware/Oracle_IDM1/wlserver/../bin/oiddispd: error while loading shared libraries: libclntshcore.so.12.1: cannot open shared object file: No such file or directory

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

cd /u/app/oracle/config/domains/oid_domain/bin/ nohup ./startNodeManager.sh & ./startComponent.sh oid1 

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

ps –ef|grep oidmon kill oidmon 
sqlplus / as sysdba update ods.ods_process_status set pid=0 where compname='oid1'; update ods.ods_process_status set state=4 where compname='oid1'; 
./ldapbind -h localhost -p 3060 ./ldapbind -h localhost -p 3131 -U 1 -D 'cn=orcladmin' -w **** 

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

oracle.net.common.dataStore.DataStoreException: error writing ServiceAlias to: LDAPDataStore [svr: uhost-oid1.mycompany.ru:3060:3131, type: OID, ctxt: cn=OracleContext,dc=mycompany,dc=ru, home: C:\oracle\product\12.1.0\client_1] original exception message: TNS-04409: Ошибка службы каталогов caused by: oracle.net.config.DirectoryServiceException: TNS-04405: Общая ошибка caused by: oracle.net.ldap.NNFLException original stack trace: oracle.net.config.ServiceAliasException: TNS-04409: Ошибка службы каталогов caused by: oracle.net.config.DirectoryServiceException: TNS-04405: Общая ошибка caused by: oracle.net.ldap.NNFLException oracle.net.config.DirectoryServiceException: TNS-04405: Общая ошибка caused by: oracle.net.ldap.NNFLException oracle.net.ldap.NNFLException 

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

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

dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry changetype: modify replace: orclAnonymousBindsFlag orclAnonymousBindsFlag: 1 

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

ldapmodify -D cn=orcladmin -W -p 3131 -h localhost -f anonymousbind.ldif

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

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

ldapsearch -h uhost-oid1.mycompany.ru -p 3060 -D "cn=orcladmin" -w password_hear -b "cn=mytest,cn=OracleContext,dc=mycompany,dc=ru" -s base "objectclass=*"

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

DIRECTORY_SERVERS = (uhost-oid1.mycompany.ru:3060:3131,rephost-oid1.mycompany.ru:3060:3131) DIRECTORY_SERVER_TYPE = OID DEFAULT_ADMIN_CONTEXT = "dc=mycompany,dc=ru" 

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

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

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

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

Default admin context (LDAP) используется для контекста по умолчанию, чтобы не указывать каждый раз mycompany.ru

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

Дальше расскажу, как настроить репликацию между серверами

  • Oracle
  • Администрирование баз данных

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *