ora 12514 как исправить
ORA-12514 TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения
У нас есть приложение, работающее локально, где мы видим следующую ошибку:
ORA-12514: TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения
Я протестировал соединение, TNSPing которое было разрешено правильно, и попытался SQLPlus установить соединение, которое не удалось с той же ошибкой, что и выше Я использовал этот синтаксис для SQLPlus :
Мы не знаем о каких-либо изменениях, которые были сделаны в этой среде. Что-нибудь еще мы можем проверить?
У меня возникла эта проблема, и исправление состояло в том, чтобы убедиться, что в вашей базе данных tnsnames.ora указано SERVICE_NAME правильное имя службы. Чтобы узнать действительные имена сервисов, вы можете использовать следующий запрос в Oracle:
Однажды я обновился tnsnames.ora до:
Успех! Слушатель в основном говорит вам, что какое бы имя_службы вы не использовали, оно не является действительным сервисом в соответствии с БД.
(* Я запускал sqlplus с клиентской рабочей станции Win7 на удаленную БД и обвинял администраторов БД;) *)
Я знаю, что это старый вопрос, но все еще без ответа. Это заняло у меня целый день исследований, но я нашел самое простое решение, по крайней мере, в моем случае (Oracle 11.2 в Windows 2008 R2) и хотел поделиться им.
Ошибка, если смотреть непосредственно, указывает, что слушатель не распознает имя службы. Но где он хранит названия сервисов? В %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
Я добавил проблему Service Name, затем в панели управления Windows «Службы» произвел «Перезапуск» в службе прослушивания Oracle. Теперь все хорошо.
Например, ваш файл listener.ora может изначально выглядеть так:
У меня была эта проблема на Windows Server 2008 R2 и Oracle 11g
перейдите в Net Manager> Слушатель> выберите службы баз данных из поля со списком> «Глобальное имя базы данных» должно совпадать с «SID», а «Oracle Home Directory» должен быть правильным.
Если у вас нет записей для служб баз данных, создайте их и задайте правильную глобальную базу данных sid и oracle home.
В моих обстоятельствах ошибка была связана с тем, что у слушателя не была зарегистрирована служба БД. Я решил это путем регистрации услуг. Пример:
Мой дескриптор в tnsnames.ora :
Итак, приступаю к регистрации сервиса в listener.ora ручном режиме:
Наконец, перезапустите слушатель по команде:
Запуск OracleServiceXXX из services.msc работал для меня в Windows.
а затем подключение с помощью
Далее запустим команду из ответа Брэда Риппе:
показал, что имена не совпадают точно. Записи, созданные с помощью Oracle Database Configuration Assistant, где изначально:
Я перезапустил службу прослушивателя TNS (я часто использую lsnrctl stop и lsnrctl start из командного окна администратора [или Windows Powershell] вместо панели управления службами, но оба работают.) После этого я смог подключиться.
У меня такая же проблема. Для меня просто пишу
сделал трюк, делая так, он подключается к имени службы по умолчанию, я думаю.
То, что работало для меня, было действительно простым, мне просто нужно было вручную запустить службу в «Службах Windows» (services.msc в cmd trompt). мое сервисное имя: OracleServiceXXXXX.
Проверьте, что база данных работает. Войдите на сервер, задайте для переменной среды ORACLE_SID SID базы данных и запустите SQL * Plus в качестве локального соединения.
Эта ошибка может возникать, когда приложение устанавливает новое соединение для каждого взаимодействия с базой данных или соединения не закрываются должным образом. Одним из бесплатных инструментов для мониторинга и подтверждения этого является Oracle Sql developer (хотя это не единственный инструмент, который вы можете использовать для мониторинга сеансов БД).
Вы можете скачать инструмент с сайта оракула Sql Developer
Вот скриншот того, как следить за вашими сессиями. (если вы видите много сессий, накапливающихся для пользователя вашего приложения во время, когда вы видите ошибку ORA-12514, то это хороший признак того, что у вас может быть проблема с пулом соединений).
Я решил эту проблему в своей среде linux, обновив IP-адрес моей машины в файле / etc / hosts.
Вы можете проверить свой сетевой IP (inet end.) С помощью:
Посмотрите, совпадает ли ваш IP с файлом / etc / hosts:
Отредактируйте файл / etc / hosts, если он подключен:
Для тех, кто может использовать Oracle на виртуальной машине (например, я), я видел эту проблему, потому что моей виртуальной машине не хватало памяти, что, по-видимому, препятствовало правильному запуску / запуску OracleDB. Увеличение моей виртуальной памяти и перезапуск исправили проблему.
Здесь много ответов, но вот рабочий пример с кодом, который можно сразу скопировать, вставить и протестировать:
Для меня ошибка 12514 была решена после указания правильного SERVICE_NAME. Вы обнаружите, что на сервере в файле, tnsnames.ora который поставляется с 3 предопределенными именами служб (одно из них «XE»).
Если SERVICE_NAME=XE вы ошиблись, вы получите ошибку 12514. Это SERVICE_NAME необязательно. Вы также можете оставить это в стороне.
Я также столкнулся с той же самой проблемой и потратил 3 дня, чтобы выкопать это.
Это происходит из-за неправильного входа в службу TNS.
Сначала проверьте, можете ли вы подключиться к резервной базе данных из первичной базы данных, используя sql> sqlplus sys@orastand as sysdba ( orastand резервная база данных).
Если вы не можете подключиться, то это проблема с сервисом. Исправьте запись имени службы в файле TNS на первичном конце.
Проверьте резервную базу данных таким же образом. Внесите изменения и здесь, если требуется.
Убедитесь, что log_archive_dest_2 параметр имеет правильное имя службы.
ORA-12514 TNS: слушатель в настоящее время не знает о запрошенной службе в дескрипторе соединения
У нас есть приложение, работающее локально, где мы испытываем следующую ошибку:
ORA-12514: TNS: слушатель в настоящее время не знает о запрошенной услуге в дескрипторе соединения
Мы не знаем никаких изменений, которые были внесены в эту среду. Что-нибудь еще, что мы можем проверить?
ОТВЕТЫ
Ответ 1
У меня была эта проблема, и исправление заключалось в том, чтобы убедиться, что в tnsnames.ora SERVICE_NAME является допустимым именем службы в вашей базе данных. Чтобы узнать правильные имена служб, вы можете использовать следующий запрос в oracle:
Как только я обновил tnsnames.ora до:
Успех! Слушатель в основном говорит вам, что любое имя службы, которое вы используете, не является действительной службой в соответствии с БД.
(* Я запускал sqlplus из клиентской рабочей станции Win7 для удаленного БД и обвинял администраторов баз данных;) *)
Ответ 2
Я знаю, что это старый вопрос, но все еще без ответа. Это заняло у меня целый день исследований, но я нашел самое простое решение, по крайней мере, в моем случае (Oracle 11.2 в Windows 2008 R2) и хотел поделиться им.
Ошибка, если смотреть непосредственно, указывает, что слушатель не распознает имя службы. Но где он хранит названия сервисов? В %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
Я добавил проблему Service Name, затем в панели управления Windows «Службы» произвел «Перезапуск» в службе прослушивателя Oracle. Теперь все хорошо.
Например, ваш файл listener.ora может изначально выглядеть так:
Ответ 3
У меня была эта проблема на сервере Windows 2008 R2 и Oracle 11g
перейдите в Net Manager > Listener > выберите службы базы данных из combox > «Глобальное имя базы данных» должно быть таким же, как «SID» и «Oracle Home Directory» должны быть правильными.
Если у вас нет какой-либо записи для служб баз данных, создайте ее и установите правильную глобальную базу данных, sid и oracle home.
Ответ 4
В моих обстоятельствах ошибка была связана с тем, что у слушателя не была зарегистрирована служба db. Я решил это путем регистрации услуг. Пример:
Мой дескриптор в tnsnames.ora :
Итак, я продолжаю регистрировать сервис в listener.ora вручную:
Наконец, перезапустите слушателя командой:
Ответ 5
Запуск OracleServiceXXX из services.msc работал у меня в Windows.
Ответ 6
На самом деле это должен быть комментарий к Brad Rippe, но, увы, не хватает репутации. Этот ответ дал мне 90% пути. В моем случае установка и настройка баз данных помещали записи в файл tnsnames.ora для баз данных, которые я запускал. Во-первых, я смог подключиться к базе данных, установив переменные среды (Windows):
а затем соединение с помощью
Затем, запустив команду из Brad Rippe, ответьте:
показал, что имена не совпадают точно. Записи, созданные с помощью Oracle Database Configuration Assistant, где первоначально:
Я перезапустил службу прослушивателя TNS (я часто использую lsnrctl stop и lsnrctl start из командной строки администратора [или Windows Powershell] вместо панели управления Services, но обе работают.) После этого я смог подключиться.
Ответ 7
Проверьте, что база данных обновлена. Войдите на сервер, установите переменную среды ORACLE_SID в SID базы данных и запустите SQL * Plus в качестве локального соединения.
Ответ 8
Эта ошибка может возникать, когда приложение создает новое соединение для каждого взаимодействия с базой данных или соединения не закрываются должным образом. Одним из бесплатных инструментов для мониторинга и подтверждения этого является разработчик Oracle Sql (хотя это не единственный инструмент, который вы можете использовать для мониторинга сеансов DB).
вы можете загрузить инструмент с сайта oracle Sql Developer
вот скриншот о том, как контролировать сеансы. (если вы видите много сеансов, накапливающихся для вашего пользователя приложения во время просмотра ошибки ORA-12514, то это хороший признак того, что у вас может быть проблема пула соединений).
Ответ 9
Ответ 10
Я решил эту проблему в среде linux, обновляя IP-адрес моей машины в файле /etc/hosts.
Вы можете проверить свой IP-адрес сети (inet end.) с помощью
Посмотрите, совпадает ли ваш IP файл с файлом /etc/hosts:
Отредактируйте файл /etc/hosts, если nedded:
Ответ 11
У меня была та же проблема, для меня просто пишу
сделал трюк, поэтому он подключается к имени службы по умолчанию, которое я предполагаю.
Ответ 12
Для тех, кто может работать с Oracle в виртуальной машине (например, я), я видел эту проблему, потому что у моей VM не хватало памяти, что, похоже, помешало OracleDB правильно запущен/запущен. Увеличение памяти VM и перезапуск исправили проблему.
Ответ 13
то, что сработало для меня, было очень просто, мне просто нужно было запустить сервис вручную в «Служб Windows» (services.msc в cmd trompt). мое имя службы: OracleServiceXXXXX.
Ответ 14
Здесь много ответов, но здесь приведен рабочий пример с кодом, который вы можете скопировать и вставить и протестировать сразу:
Если ошибка SERVICE_NAME=XE неверна, вы получаете ошибку 12514. SERVICE_NAME не является обязательным. Вы также можете оставить его.
Ответ 15
В моем случае в базе данных закончилось дисковое пространство. Это заставило его не отвечать. Как только я выяснил эту проблему, все снова работало.
Ответ 16
Я получил ту же ошибку, потому что указанный удаленный идентификатор безопасности был неправильным:
Я запросил системную базу данных:
выберите * из global_name;
и нашел мой удаленный SID ( «XE» ).
Тогда я мог бы подключиться без каких-либо проблем.
Ответ 17
Если вы получили это сообщение об ошибке, но не успешно выполнили TNSPing, как это делали OP, попробуйте эти инструкции для как запустить Oracle и слушателей.
Ответ 18
Для меня это было вызвано использованием динамического ipadress с использованием установки. Я переустановил Oracle, используя статический ipadress, и тогда все было в порядке
Ответ 19
Перезапуск ВМ работал на меня
Ответ 20
Моя проблема была решена путем замены «SID» в URL на «имя службы» и правильный хост.
Ответ 21
Я сделал ниже, чтобы решить эту проблему.
Я установил oracle_home в подсказке cmd (щелкните правой кнопкой мыши cmd.exe Запуск от имени системного администратора). используется ниже команды
установить oracle_home = «путь к дому оракула»
У меня был установлен оракул в моем диске D:.
ORA-12514 TNS: слушатель в настоящее время не знает о запрошенной службе в дескрипторе соединения
У нас есть приложение, работающее локально, где мы испытываем следующую ошибку:
ORA-12514: TNS: слушатель в настоящее время не знает о запрошенной услуге в дескрипторе соединения
- Слушатель TNS на сервере запущен.
Сам Oracle на сервере запущен.
Мы не знаем никаких изменений, которые были внесены в эту среду.
Что-нибудь еще, что мы можем проверить?
У меня была эта проблема, и исправление заключалось в том, чтобы убедиться, что в tnsnames.ora SERVICE_NAME является допустимым именем службы в вашей базе данных. Чтобы узнать правильные имена служб, вы можете использовать следующий запрос в oracle:
Как только я обновил tnsnames.ora до:
Успех!
Слушатель в основном говорит вам, что любое имя службы, которое вы используете, не является действительной службой в соответствии с БД.
(* Я запускал sqlplus из клиентской рабочей станции Win7 для удаленного БД и обвинял администраторов баз данных;) *)
Я знаю, что это старый вопрос, но все еще без ответа. Мне потребовался день исследований, но я нашел самое простое решение, по крайней мере, в моем случае (Oracle 11.2 на Windows 2008 R2) и хотел поделиться.
Ошибка, если смотреть прямо, указывает, что слушатель не распознает имя службы. Но где он хранит имена сервисов? В %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
Я добавил проблемное имя службы, а затем в панель управления Windows «Службы» я сделал «Перезапуск» в службе прослушивателя Oracle. Теперь все хорошо.
У меня была эта проблема на сервере Windows 2008 R2 и Oracle 11g
перейдите в Net Manager > Listener > выберите службы базы данных из combox > «Глобальное имя базы данных» должно быть таким же, как «SID» и «Oracle Home Directory» должны быть правильными.
Если у вас нет какой-либо записи для служб баз данных, создайте ее и установите правильную глобальную базу данных, sid и oracle home.
Запуск OracleServiceXXX из services.msc работал у меня в Windows.
В моих обстоятельствах ошибка была вызвана тем фактом, что слушатель не имел зарегистрированной службы db. Я решил это, зарегистрировав службы. Пример:
Мой дескриптор в tnsnames.ora :
Итак, я перехожу к регистрации службы в listener.ora вручную:
Наконец, перезапустите слушателя командой:
На самом деле это должен быть комментарий к Brad Rippe, но, увы, не хватает репутации. Этот ответ дал мне 90% пути. В моем случае установка и настройка баз данных помещали записи в файл tnsnames.ora для баз данных, которые я запускал. Во-первых, я смог подключиться к базе данных, установив переменные среды (Windows):
а затем соединение с помощью
Затем, запустив команду из Brad Rippe, ответьте:
показал, что имена не совпадают точно. Записи, созданные с помощью Oracle Database Configuration Assistant, где первоначально:
Я перезапустил службу прослушивателя TNS (я часто использую lsnrctl stop и lsnrctl start из командной строки администратора [или Windows Powershell] вместо панели управления Services, но обе работают.) После этого я смог подключиться.
У меня была та же проблема, для меня просто пишу
сделал трюк, поэтому он подключается к имени службы по умолчанию, которое я предполагаю.
Эта ошибка может возникать, когда приложение создает новое соединение для каждого взаимодействия с базой данных или соединения не закрываются должным образом. Одним из бесплатных инструментов для мониторинга и подтверждения этого является разработчик Oracle Sql (хотя это не единственный инструмент, который вы можете использовать для мониторинга сеансов DB).
вы можете загрузить инструмент с сайта oracle Sql Developer
вот скриншот о том, как контролировать сеансы. (если вы видите много сеансов, накапливающихся для вашего пользователя приложения во время просмотра ошибки ORA-12514, то это хороший признак того, что у вас может быть проблема пула соединений).
Проверьте, что база данных обновлена. Войдите на сервер, установите переменную среды ORACLE_SID в SID базы данных и запустите SQL * Plus в качестве локального соединения.
Здесь много ответов, но здесь приведен рабочий пример с кодом, который вы можете скопировать и вставить и протестировать сразу:
Если ошибка SERVICE_NAME=XE неверна, вы получаете ошибку 12514. SERVICE_NAME не является обязательным. Вы также можете оставить его.
ORA-12514 TNS:listener does not currently know of service requested in connect descriptor
We have an application running locally where we’re experiencing the following error:
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
I’ve tested the connection using TNSPing which resolved correctly and I tried SQLPlus to try connecting, which failed with the same error as above. I used this syntax for SQLPlus :
We have verified that:
We don’t know of any changes that were made to this environment. Anything else we can test?
28 Answers 28
I had this issue and the fix was to make sure in tnsnames.ora the SERVICE_NAME is a valid service name in your database. To find out valid service names, you can use the following query in oracle:
Once I updated tnsnames.ora to:
Success! The listener is basically telling you that whatever service_name you are using isn’t a valid service according to the DB.
(*I was running sqlplus from Win7 client workstation to remote DB and blame the DBAs 😉 *)
I know this is an old question, but still unanswered. It took me a day of research, but I found the simplest solution, at least in my case (Oracle 11.2 on Windows 2008 R2) and wanted to share.
The error, if looked at directly, indicates that the listener does not recognize the service name. But where does it keep service names? In %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
The «SID_LIST» is just that, a list of SIDs and service names paired up in a format you can copy or lookup.
I added the problem Service Name, then in Windows «Services» control panel, I did a «Restart» on the Oracle listener service. Now all is well.
For example, your listener.ora file might initially look like:
In my circumstances the error was due to the fact the listener did not have the db’s service registered. I solved this by registering the services. Example:
My descriptor in tnsnames.ora :
So, I proceed to register the service in the listener.ora manually:
Finally, restart the listener by command:
I had this issue at Windows server 2008 R2 and Oracle 11g
go to Net Manager > Listener > select database services form the combox > «Global Database Name» must be same as «SID» and «Oracle Home Directory» must be correct.
Starting the OracleServiceXXX from the services.msc worked for me in Windows.
This really should be a comment to Brad Rippe’s answer, but alas, not enough rep. That answer got me 90% of the way there. In my case, the installation and configuration of the databases put entries in the tnsnames.ora file for the databases I was running. First, I was able to connect to the database by setting the environment variables (Windows):
and then connecting using
Next, running the command from Brad Rippe’s answer:
showed that the names didn’t match exactly. The entries as created using Oracle’s Database Configuration Assistant where originally:
I restarted the TNS Listener service (I often use lsnrctl stop and lsnrctl start from an administrator command window [or Windows Powershell] instead of the Services control panel, but both work.) After that, I was able to connect.
I had the same problem. For me, just writing
did the trick, doing so makes it connect to the default service name, I guess.
what worked for me was really simple, I just needed to initiate the service manually in the «Windows Services» (services.msc in cmd trompt). my service name is: OracleServiceXXXXX.
I had also faced the same problem and spent 3 days to dig it out.
This happens because of your wrong TNS service entry.
First check whether you are able to connect to standby database from primary database using sql > sqlplus sys@orastand as sysdba ( orastand is a standby database).
If you are not able to connect then it is a problem with the service. Correct the entry of service name in TNS file at primary end.
Check standby database the same way. Make the changes here too if required.
Make sure the log_archive_dest_2 parameter has the correct service name.
Check to see the database is up. Log onto the server, set the ORACLE_SID environment variable to your database SID, and run SQL*Plus as a local connection.
This error can occur when an application makes a new connection for every database interaction or the connections are not closed properly. One of the free tools to monitor and confirm this is Oracle Sql developer (although this is not the only tool you can use to monitor DB sessions).
you can download the tool from oracle site Sql Developer
here is a screenshot of how to monitor you sessions. (if you see many sessions piling up for your application user during when you see the ORA-12514 error then it’s a good indication that you may have connection pool problem).
I resolved this issue in my linux enviroment updating the IP of my machine in /etc/hosts file.
You can verify your network IP (inet end.) with:
See if your IP matches with /etc/hosts file:
Edit your /etc/hosts file, if nedded:
For those that may be running Oracle in a VM (like me) I saw this issue because my VM was running out of memory, which seems to have prevented OracleDB from starting up/running correctly. Increasing my VM memory and restarting fixed the issue.
Lots of answers here, but here comes a working example with code that you can copy and paste and test immediately:
For me the error 12514 was solved after specifying the correct SERVICE_NAME. You find that on the server in the file tnsnames.ora which comes with 3 predefined service names (one of them is «XE»).
If the SERVICE_NAME=XE is wrong you get error 12514. The SERVICE_NAME is optional. You can also leave it away.
ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения
Я пытаюсь подключиться к oracle 11g, установленному на Linux EL 5, и получаю следующую ошибку
мой слушатель.ora под network / admin выглядит следующим образом
мои tnsnames.Ора выглядит следующим образом
мой статус lsnrctl показывает следующее:
8 ответов
можете ли вы успешно выполнить ping ud06 (как ud06, не ud06.us.server.com)?
что делает команда
изменить: Мне кажется, что имя экземпляра базы данных на самом деле не «orcl»? Вывод служб lsnrctl говорит мне, что служба «orcl», хотя и определена в прослушивателе.Ora файл, на самом деле не работает.
можете ли вы войти в систему с прямым подключением на сервере? Если да, то что вы используете в качестве Oracle_sid, вам нужно будет значение переменной окружения? Войдите в систему как пользователь SYS и введите команду:
ИЗМЕНИТЬ СИСТЕМНЫЙ РЕГИСТР;
затем снова выполните команду lsnrctl services и посмотрите, не появится ли дополнительный экземпляр.
кроме того, как указывает Алекс, команда tnsping сообщает полное имя службы. Редактирование заменить sqlnet.Ora файл и установить имена.Значение DEFAULT_DOMAIN равно NULL, если оно имеет значение.
редактировать 2: делает tnsping ud06 на сервер работы? Или мое предположение, что клиент и сервер находятся в разных системах неправильно?
только при подключении через командную строку он путается с паролями, в которых есть символ@.
поэтому при подключении через SQL командной строки Не используйте пароль с » @ » в нем. Просто используйте веб-интерфейс для создания учетной записи, имеющей пароль без символа » @ » в он.
вот!! Проблема решена. Я ломал голову в течение нескольких дней, и теперь моя проблема решена!!
Я также сталкиваюсь с ORA-12154:TNS: не удалось разрешить указанный идентификатор подключения, и добавление пользователя, пытающегося подключиться к группе oinstall oracle, исправило его.
сначала попробуйте запустить экземпляр oracle:
указать строку подключения следующим образом: