Ошибка TNS-12514 может возникнуть во множестве случаев, как на windows, так и на unix/linux платформах. Но чаще всего неприятности с подключением происходят именно на windows платформе.
Первое, что необходимо проверить, настройки самого прослушивателя listener.ora:
LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ADR_BASE_LISTENER = C:\app\oracle\product\12.1.0\dbhome_1
Далее следует убедиться, что экземпляр БД запущен.
> export ORACLE_SID=my_sid > sqlplus / as sysdba Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL>
Если вместо версии БД мы получаем сообщение:
Connected to an idle instance. SQL>
то запускаем БД:
SQL>startup
Если подключиться к БД по-прежнему не удается, то проверяем процесс прослушивателя.
LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 14-DEC-2015 16:50:50 Copyright (c) 1991, 2014, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Production Start Date 14-DEC-2015 16:37:40 Uptime 0 days 0 hr. 13 min. 10 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File C:\app\oracle\product\12.1.0\dbhome_1\listener.ora Listener Log File C:\app\oracle\product\12.1.0\dbhome_1\log\diag\tnslsnr\phoenix\listener\alert\log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) The listener supports no services The command completed successfully
Обычно каждая БД регистрируется автоматически. Если появляется сообщение “прослушиватель не поддерживает сервисов”, то, как правило, экземпляр БД не может зарегистрироваться. При регистрации используются сетевые параметры, заданные по-умолчанию. Если они не совпадают с настройками прослушивателя, то в БД необходимо установить параметр LOCAL_LISTENER. По-умолчанию параметр имеет пустое значение.
SQL> show parameter local_listener; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------- local_listener string SQL> alter system set LOCAL_LISTENER='(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' scope=both; System altered. SQL> show parameter local_listener; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------- local_listener string (ADDRESS = (PROTOCOL=TCP)(HOST= =localhost)(PORT=1521)) SQL>
После установки параметра БД автоматически регистрируется для прослушивателя.