Если произойдет сбой, как описано, service_name для записи в файле tnsnames.ora неверно.
Я бы сделал копию файла tnsnames.ora в папку и переименовал запись в ORCL во что-тоуникальный для моего теста
oracle @ befb83f389c6: ~ $ mkdir tst oracle @ befb83f389c6: ~ $ cp product / 11.2.0 / xe / network / admin / tnsnames.ora tst / oracle @ befb83f389c6: ~$ vim tst / tnsnames.ora oracle @ befb83f389c6: ~ $ cat tst / tnsnames.ora
tnsnames.ora Файл конфигурации сети:
ONLYFORME = (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP)) (HOST = befb83f389c6) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = PRO)KEY = EXTPROC_FOR_XE))) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO)))
в этот момент tnsping к имени ONLYFORME завершится сбоем, так как клиент не знает о копии имен tnsname.ora file
oracle @ befb83f389c6: ~ $ tnsping ONLYFORME
Утилита TNS Ping для Linux: версия 11.2.0.2.0 - выпуск 06-ОКТ-2018 12: 18: 51
Copyright (c) 1997, 2011Oracle.Все права защищены.
Используемые файлы параметров:
TNS-03505: Не удалось разрешить имя
для компенсации, мы устанавливаем переменную TNS_ADMIN envable
oracle @ befb83f389c6: ~ $ export TNS_ADMIN = / u01 / app / oracle / tst / oracle @ befb83f389c6: ~ $ tnsping ONLYFORME
Утилита TNS Ping для Linux: версия 11.2.0.2.0 - производство06 октября 2018 12: 19: 16
Copyright (c) 1997, 2011, Oracle.Все права защищены.
Используемые файлы параметров:
Используется адаптер TNSNAMES для разрешения псевдонима Попытка связаться (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (HOST = befb83f389c6) (PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE))) OK (0 мс) oracle @ befb83f389c6: ~ $
теперь tnsping для ONLYFORME работает
соединение сsqlplus, использующий это имя, также отлично работает
oracle @ befb83f389c6: ~ $ sqlplus iasim @ ONLYFORME
SQL * Plus: выпуск 11.2.0.2.0 Производство в субботу, 6 октября 12:22: 43 2018
Copyright (c) 1982, 2011, Oracle.Все права защищены.
Введите пароль:
Подключено к: Oracle Database 11g Express Edition, выпуск 11.2.0.2.0 - 64-разрядная версия
SQL>
чтобы воспроизвести полученную ошибку, мы могли бы указать неизвестное имя службы
oracle @ befb83f389c6: ~ $ cat tst / tnsnames.ora
tnsnames.ora Файл конфигурации сети:
ONLYFORME = (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (HOST = befb83f389c6) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = UNKNOWN_XE)))
1067 * EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC_FOR_XE)))) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO)))
* 6b6686f6696~ $ sqlplus iasim @ ONLYFORME
SQL * Plus: выпуск 11.2.0.2.0 Производство в субботу, 6 октября 12:25:17 2018
Copyright (c) 1982, 2011, Oracle.Все права защищены.
Введите пароль: ОШИБКА: ORA-12514: TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения
Введите имя пользователя:
на данный момент мы знаем, какой именно файл tnsnames.ora разрешает используемое нами tnsname (ONLYFORME), и мы знаем, где ошибка
надеюсь, это поможет ...