Как запустить listener oracle через командную строку

Обновлено: 06.07.2024

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

Прослушиватель

Прослушиватель (Listener) - главный сетевой компонент на стороне сервера Oracle, позволяющий устанавливать соединение между клиентским компьютером и базой данных Oracle. Один прослушиватель может обслуживать неограниченное количество баз данных.

Прослушиватель управляется файлом listener.ora. Может быть сконфигурирован только один файл listener.ora, на сервере может быть настроено несколько прослушивателей, и этот единственный файл может обслуживать их все. Как правило, если на одном сервере настроено несколько прослушивателей, то это сделано либо с целью обеспечения отказоустойчивости, либо для балансировки обращений к базе данных. Несколько прослушивателей, так же настраиваются при использовании Real Application Cluster.

Каждый прослушиватель представляет собой именованный процесс, запускаемый на каждом сервере баз данных. По умолчанию, прослушиватель имеет имя LISTENER и создается при установке Oracle. Если же вы настраиваете несколько прослушивателей, то каждый должен иметь уникальное имя. Ниже представлен пример файла listener.ora:

Теперь вы имеете общее представление о прослушивателе. И можем настроить прсолушиватель для нашей базы данных.

Для создания будем использовать утилиту netca, она как и многие утилиты находится в каталоге $ORACLE_HOME/bin. Для запуска, перейдем в нужную директорию и выполним:

oracle@test: cd /u01/app/oracle/product/11.1.0/db_1/bin
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./netca

Откроется окно графического приложения:



Предлагаются варианты, чего собственно будем настраивать. Нас интересует прослушиватель, поэтому выбираем "Listener configuration" и переходим далее.


Предлагается выбрать действие, добавить, перенастроить, удалить или переименовать. Поскольку на нашей машине еще не настроено ни одного прослушивателя, то единственное доступное действие - Добавить. Что и выбираем, и переходим далее.


На этом шаге указываем имя прослушивателя, по умолчанию предлагается имя LISTENER, как и говорилось в начале урока. На данный момент не планируется настраивать дополнительные прослушиватели и базы данных на тестовой машине, поэтому соглашаюсь с предложенным именем и перехожу к следующему шагу.


Здесь предстоит указать протоколы, которые будут использованы. Как правило, используется обычный TCP, его и выбираем. Жмем далее.



Указываем порт, который будет использоваться прослушивателем. По умолчанию, это 1521. Оставляем как есть и переходим далее.

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

Теперь, когда прослушиватель настроен, можно познакомится с основными командами управления. Для управления прослушивателем используется утилита lsnrctl, расположена там же, где и утилита для настройки прослушивателя. Для ее запуска выполним:

oracle@test: cd /u01/app/oracle/product/11.1.0/db_1/bin
oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./lsnrctl

Результатом исполнения, будет приглашение работать с консолью прослушивателя:

Для прослушивателя доступны три основные команды: start, stop и status. Команда start служит для запуска процесса прослушивания, stop - остановка, status - показывает текущий статус прослушивателя.

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

Аналогичным образом можно выполнить остановку или просмотреть статус.

Это все хорошо, скажете вы, но как быть если прослушивателя два, или три, как объяснить Oracle с каким прослушивателем хочет работать пользователь?

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

oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./lsnrctl start LISTENER

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

Для этого, убедимся что наш прослушиватель запущен, выставим переменные окружения:

oracle@test:export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
oracle@test:export ORACLE_SID=test

Этими командами выставлена директория ORACLE_HOME и текущий SID. Переходим в каталог $ORACLE_HOME/bin.

oracle@test:/u01/app/oracle/product/11.1.0/db_1/bin> ./sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Sun Feb 8 18:51:55 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to an idle instance.
SQL>

Если база данных потушена, то об этом будет сообщено: Connected to an idle instance. Т.е. мы подключились к простаивающему экземпляру. Если же база данных поднята, то сообщится версия базы данных и редакция. Сейчас база данных погашена, для работы с ней, требуется ее запустить. Для этого выполним:

[oracle@test bin]$ ./sqlplus / as sysdba
SQL*Plus: Release 11.1.0.7.0 - Production on Thu Mar 19 19:49:47 2009
Copyright (c) 1982, 2008, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 845348864 bytes
Fixed Size 1316656 bytes
Variable Size 503318736 bytes
Database Buffers 335544320 bytes
Redo Buffers 5169152 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@test bin]$

Сейчас база данных готова к работе. Для того что бы прверить работоспособность можно снова зайти в sqlplus и выполнить любой sql запрос. Например:

Вам будет выведена информация о базе данных.

Остался вопрос, как остановить базу данных. Остановка базы данных осуществляется так же через sqlplus. Для этого заходим в него, как было описано выше, при описании запуска базы данных Oracle. Ниже показана процедура остановки экземпляра базы данных и прослушивателя:

Сейчас база данных и прослушиватель остановлены. На этом завершим урок. В дальнейших уроках, будет более подробно остановимся на запуске и остановке экземпляра базы данных. Расскажу о параметрах остановки и запуска экземпляра и как они могут повлиять на работоспособность базы данных или помочь в случае сбоев.

Для того чтобы соединяться с БД, используя сетевые протоколы, необходим процесс прослушивания (Listener).

image

2. На экранее Apps выберите иконку Net Configuration Assistant.

image

3. Окно Net Configuration Assistant: Welcome. Выберите пункт Listener configuration. Нажмите Следующий.

image

4. Окно Net Configuration Assistant: Listener Configuration, Listener. Выберите пункт Add. Нажмите Следующий.

image

image

6. Окно Net Configuration Assistant: Listener Configuration, Select Protocols. Выберите сетевой протокол для процесса прослушивания. По умолчанию предлагается TCP, не меняйте его. Нажмите Следующий.

image

7. Окно Net Configuration Assistant: Listener Configuration, TCP/IP Protocol. Выберите порт для TCP/IP протокола. По умолчанию предлагается 1521, не меняйте его. Нажмите Следующий.

image

8. Окно Net Configuration Assistant: Listener Configuration, More Listeners?. Хотите ли создать еще один Listener? Выберите пункт No. Нажмите Следующий.

image

9. Окно Net Configuration Assistant: Listener Configuration Done. Создание процесса прослушивания завершено. Нажмите Следующий.

image

10. Окно Net Configuration Assistant: Welcome. Нажмите Готово.

image

11. Listener создан и запущен. В службах вы должны видеть службу Oracle<HOME_NAME>TNSListener.

image

12. Для проверки работоспособности процесса прослушивания, можно использовать консольную утилиту lsnrctl. При выполнении команды status в этой утилите вы должны видеть вывод на экран подобный тому, что показан на рисунке.

Oracle рекомендует следующий порядок действий для запуска БД: запуск Database Control, запуск listener-а, запуск БД. Запуск БД также является составным процессом. При запуске более сложного окружения, такого как cluster system или любого другого управляемого Enterprise Manager Grid Control могут быть дополнительные этапы, однако для Single Instance архитектуры этой последовательности вполне достаточно.

Запуск и подключение к Database Control

Для запуска Database Control необходимо запустить программу emctl, расположенную в папке $ORACLE_HOME/bin. Ниже перечислены команды для запуска, остановки и проверки состояния Database Control

emctl start dbconsole

emctl stop dbconsole

ecmtl status dbconsole

Для успешного выполнения этих команд должны быть установлены следующие системные переменные: PATH, ORACLE_HOME и ORACLE_SID. PATH используется операционной системой для поиска пути к программе emctl. ORACLE_HOME и ORACLE_SID используются для поиска командой emctl файлов конфигурации. Эти файлы расположены в трёх местах: папка ORACLE_HOME/sysman/config содержит общие настройки для всех экземпляров Database Control работающих с текущей домашней директорией Oracle. ORACLE_HOME/hostname_sid/sysman/config и ORACLE_HOME/oc4j/j2ee/ OC4J_DBConsole_ hostname_sid/config содержат дополнительные расширенные настройки для каждой БД(hostname – имя компьютера, sid – значение переменной ORACLE_SID).

На рисунке 3-3 показан результат выполнения команды запуска Database Control

16

Первая попытка запуска была неудачной так как не была установлена переменная ORACLE_SID. Без корректного значения этой переменной emctl не может найти необходимые файлы конфигурации (значение используется в названии папок). Команда проверки состояния ни что иное как запрос по адресу URL; доступность этого URL так же можно проверить в браузере

где hostname – это сетевое имя компьютера на котором запущен Database Control и port – это порт ответственный за входящие подключения. Если у вашего сервера несколько сетевых имён или несколько сетевых интерфейсов – можно использовть любой. Для определения порта можно использовать команду emctl либо посмотреть конфигурационный файл ORACLE_HOME/install/portlist.ini где указаны все порты настроенные OUI и DBCA. При незапущенном listener-е при подключении к Database Control вы увидите окно изображенное на рисунке 3-4.

Запуск listener-а БД

Listener – это процесс который следит за запросами к порту для подключения к базе данных. Запросы к БД (и весь остальной трафик после создания сессии) использует Oracle Net, закрытый протокол Oracle. Oracle Net – это прокотор который работает над любым низлежащим сетевым протоколом, обычно над TCP/IP. Управление listener-ом более детально расммотрим в главе 4, сейчас же рассмотрим как запустить listener. Это можно сделать двумя (в windows тремя) способами: используя программу lsnrctl, с помощью Database Control, запустить windows сервис.

Программа lsnrctl расположена в каталоге ORACLE_HOME/bin. Параметрами могут быть

lsnrctl start [listener name]

lsnrctl status [listener name]

17

Обратите внимание на первую строчку – там указаны сетевое имя и порт listener-а, а также на пятую снизу строку, которая обозначает что listener будет принимать подключения для сервиса ocp11g который создан для экземпляра ocp11g. Это критически важная информация для подключения к БД. Если БД была успешна создана с помощью DBCA значит listener настроен и запущен. Если нет вы увидите другой ответ команды lsnrctl status, тогда используйте команду lsnrctl для запуска или нажмите кнопку START LISTENER в окне Database Control показанном на рисунке 3-4.

Запуск SQL *Plus

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

Запуск и остановка БД

Если быть точным – нельзя запустить и остановить БД: только экземпляр может быть запущен и остановлен, а база данны может быть подключена, открыта, отключена и закрыта. Данные операции можно совершить с помощью SQL *Plus выполнив команды STARTUP и SHUTDOWN или используя Database Control. В Windows это можно сделать также с помощью управления сервисом созданным для экземпляра БД. Системный журнал содержит подробную информацию об этих операциях когда бы они не были вызваны. Запуск и остановка – очень важные операции, информация об их выполнении всегда записывается и они могут быть инициированы только пользователями с особым уровнем доступа.

Подключение с повышенными правами доступа

Обычный пользователь не может запустить или остановить БД – потому что он авторизуется используя словарь данных. Это логически невозможно поскольку в момент запуска словарь данных ещё не доступен. Таким образом для запуска необходимо подключаться к серверу используя механизм внешней авторизации: системная авторизация пользователя как члена группы Oracle, или авторизация с использованием файла паролей. Тип авторизации указывается при выполнении команды CONNECT. Ниже представлены различные комбинации команды CONNECT после подключения к серверу используя программу SQL *Plus с параметром /NOLOG

connect user/pwd[@connect_alias] as sysdba

connect user/pwd[@connect_alias] as sysoper

connect / as sysdba

connect / as sysoper

где user – имя пользователя, pwd – пароль, connect_alias – сетевой идентификатор (рассмотрим в главе 4). Первый пример использует авторизацию с помощью словаря данных, база данных должны быть открыта или команда вернёт ошибку. Любой пользователь после подключения к БД используя данный синтаксис не сможет выполнить команды запуска и остановки базы данных. Два следующих примеры указывают Oracle использовать авторизацию с помощью файла паролей. Последние команды используют авторизацию операционной системы: Oracle проверяет является ли текущий пользователь членом группы Oracle, и если проверка успешна – пользователь подключается к БД как SYSOPER или SYSDBA. Пользователь подключившийся к базе данных любым способом из последних четырёх может выполнить команды запуска и остановки БД вне зависимости от состояния базы данных – она может быть даже не создана на этом этапе.

Если Database Control обнаруживает запущенный listener – то он использует авторизацию через словарь данных или файл паролей (в зависимости от выбора пользователя – рисунок 3-6). Если же listener не запущен (рисунок 3-4) при нажатии на кнопку STARTUP Database Control запрашивает системные имя пользователя и пароль для подключения к серверу.

19

SYSOPER и SYSDBA

SYSOPER и SYSDBA – это уровни доступа с повышенными полномочиями. Они доступны только при системной авторизации или авторизации с помощью файла паролей. Уровень доступа SYSOPER может выполнять команды

ALTER DATABASE [MOUNT|OPEN|CLOSE|DISMOUNT]

ALTER [DATABASE|TABLESPACE][BEGIN|END] BACKUP

Уровень доступа SYSDBA также может выполнять эти команды, плюс возможность создавать БД, запускать неполное восстановление и давать полномочия SYSOPER и SYSDBA другим пользователям.

Вам может быть интерестно под каким пользователем вы подключаетесь к БД когда используется системная авторизация. Чтобы это выяснить, после подключения к базе данных выполните команду show user (эту команду можно вызвать набрав sho user – не стоит недооценивать сокращения, они могут ускорить время набора команд) – результат показан на рисунке 3-7.

Уровень доступа SYSDBA использует пользоватля SYS – суперпользователя в системе и владельца словаря данных. Уровень доступа SYSOPER подключается как пользователь PUBLIC. PUBLIC – не пользователь в нормальном смысле, это пользователь который используется для задач администрирования, но (по умолчанию) не может просматривать или изменять данные. Подключаться с данными уровнями доступа стоит только для выполнения задач, которые не могут быть выполнены обычными пользователями.

20

Запуск: NOMOUNT, MOUNT и OPEN

Необходимо помнить что экземпляр БД и база данных это два разных объекта которые могут существовать независимо друг от друга. Когда останавливается экземпляр БД то структуры в памяти и фоновые процессы перестают существовать, однако база данных (содержимое файлов) продолжает. В архитектуре RAC другие экземпляры могут продолжать работать с базой.

Процесс запуска базы данных разбит на шаги: вначале запускается экземпляр БД, затем база данных подключается (mount) и открывается (open) для использования. В любой момент времени база данных может быть в одном из следующих состояний

Когда база данных остановлена (SHUTDOWN) все файлы закрыты и экземпляр не существует. В отключенном состоянии (NOMOUNT) – экземпляр БД построен в памяти (SGA создана и фоновые процессы запущены согдасно файлу параметров), но база данных недоступна и может быть даже ещё не создана. В подключенном состоянии (MOUNT) экземпляр находит и читает файл контроля. В открытом состоянии (OPEN) все файлы найдены и открыты – т.е. база данных доступна для пользователей. Когды вы запускаете команду STARTUP – будут выполнены все шаги, однако команда может быть разбиты на этапы. Напирмер если файл контроля испорчен или копия недоступна – вы не сможете подключить базу данных. Однако вы можете запустить базу в неподключенном режиме (NOMOUNT) и восстановить файл контроля. Точно так же если у вас возникли проблемы с файлами данных или логовов, вы можете попробовать восстановить данные в MOUNT состоянии, перед тем как открывать БД.

Как же экземпляр находит файлы которые ему нужны на каждом из шагов? Начнём с NOMOUNT. Когда вы запускаете команду STARTUP, Oracle будет искать файл параметров в определённом порядке как отображено на рисунке 3-8.

Всего существует три пути и имени файла. На Unix подобных системах это

21

Во всех случаях – SID это имя экземпляра. Порядок поиска очень важен. Oracle будет использовать первый найденный файл вне зависимости от наличия остальных. Если ни одного файла не существует – экземпляр не будет запущен. В режиме NOMOUNT используются только файл параметров и системный журнал. Значения параметров из файла параметров используются для создания SGA в памяти и запуска фоновых процессов. В системный журнал записывается информация об этот процессе. Где находится системный журнал? Путь можно узнать посмотрев параметр BACKGROUND_DUMP_DEST в файле параметров или выполнив команду

sho parameter background_dump_dest

Если системный журнал существует во время выполнения команды STARTUP то новые данные будут добавляться, иначе будет созда новый файл. Если возникнут какие-либо проблемы во время выполнения команды – так же будут созданы файлы трассировки.

Когда экземпляр запущен в режиме NOMOUNT, переход в состояние MOUNT будет осуществляться путём чтения файла контроля. Oracle находит эти файлы используя параметр CONTROL_FILES, прочитанный во время запуска экземпляра. Если файл контроля (или хотя бы одна копия) не найдены или повреждены, база данных не будет подключена и вы обязаны восстановить их перед подключением. Все копии должны быть доступны и одинаковы для успешного подключения БД.

Как часть процесса подключения, все именя файлов данных и логов и пути к ним считываются из файла контроля, но Oracle просто запоминает эти значения, не пытаясь найти файлы. Поиск и чтение файлов происходит во время открытия базы данных (OPEN). Если какой-либо файл поврежден или отсутствует база данных останется в режиме MOUNT пока вы не исправите ошибки. Более того, все файлы должны быть синхронизированы перед тем как база данных будет открыта. Если последнее выключение было выполнено в определённом порядке, то все буферы из буфера кэша БД записаны на диск процессом DBWn и файлы синхронизированы, и Oracle будет знать при запуске что все подтверждённые транзакции сохранены в файлах данных и нет неподтвержденных транзакций ожидающих отмены. Если же последнее выключение было не запланированным (к примеру от потери питания или системной перезагрузке сервера без правильного выключения экземпляра) то Oracle должен синхроинизировать файлы данных и файлы логов (отменив неподтверждённые транзакции). Процесс который подключает и открывает БД (и синхронизирует данные) называется SMON. Только когда база данных успешно открыта будет возможно подключение пользователей. Процесс запуска графически представлен на рисунке 3-9.

Остановка процесс зеркальный запуску. Вначале закрывается БД (CLOSE), затем отключается (DISMOUNT) и далее останавливается экземпляр. Во время закрытия БД все сессии отключаются: текущие транзакции отменяются процессом PMON, подтверждённые транзакции записываются в файлы данных DBWn и файлы данных и логов закрываются. Во время отключения закрывается файл контроля. И экземпляр останавливается с освобождением памяти и остановкой фоновых процессов.

22

Выключение: NORMAL, TRANSACTIONAL, IMMEDIATE и ABORT

Существуют параметры которые используются с командой SHUTDOWN – вызов SHUTDOWN команды требует уровня доступа SYSDBA или SYSOPER

NORMAL: это значение по умолчанию. Новые подключения нельзя создать, но все текущие сессии могут работать до конца сессии. Когда все пользователю отключатся база данных будет выключена.

TRANSACTIONAL: новые подключения недоступны; существующие сессии которые не выполняют транзакции отключаются; сессии которые выполняют транзанкцию завершают транзакцию и отключаются. Когда все сессии будут отключены, база данных останавливается.

IMMEDIATE: новые подключения не разрешены. Все активные сессии отключаются. Все активные транзакции отменяются и база данных выключается.

ABORT: это эквивалент отключению питания. Экземпляр останавливается без записи чего либо на диск, закрытия файлов, отмены транзакций.

Параметр “abort” оставляет базу данных в рассинхронизированном состоянии: возможно что подтверждённые транзакции не записаны в файлы данных, так как на момент выключения они были сохранены в памяти и DBWn не записал изменения из буфера в файлы. Также может быть и такое, что неподтверждённые транзакции записаны в файлы данных. Это определение испорченной БД: она содержит некорректные данные. Эти повреждения должны быть восстановлены используя instance recovery. Таким образом можно протестировать что произойдёт если к примерну непредвиденно обесточить сервер в процессе работы БД.

Так как выключение это пошаговый процесс, то возможно управлять этапами используя SQL *Plus и команды

alter database close;

alter database dismount;

Эти команды полная противоположность командам запуска. На практике SHUTDOWN это единственная команда которой пользуются DBA. Пошаговый процесс также недоступен из Database Control.

У нас есть приложение, работающее локально, где мы испытываем следующую ошибку:

ORA-12514: TNS: слушатель в настоящее время не знает о запрошенной услуге в дескрипторе соединения

Я тестировал соединение, используя TNSPing , который правильно и Я попробовал SQLPlus , чтобы попробовать подключиться, что не удалось с той же ошибкой, что и выше. Я использовал этот синтаксис для SQLPlus :

Мы проверили, что:

  • Слушатель TNS на сервере запущен.
  • Сам Oracle на сервере запущен.

Мы не знаем никаких изменений, которые были внесены в эту среду. Что-нибудь еще, что мы можем проверить?

ОТВЕТЫ

Ответ 1

У меня была эта проблема, и исправление заключалось в том, чтобы убедиться, что в tnsnames.ora SERVICE_NAME является допустимым именем службы в вашей базе данных. Чтобы узнать правильные имена служб, вы можете использовать следующий запрос в oracle:

Как только я обновил tnsnames.ora до:

Успех! Слушатель в основном говорит вам, что любое имя службы, которое вы используете, не является действительной службой в соответствии с БД.

(* Я запускал sqlplus из клиентской рабочей станции Win7 для удаленного БД и обвинял администраторов баз данных;) *)

Ответ 2

Я знаю, что это старый вопрос, но все еще без ответа. Это заняло у меня целый день исследований, но я нашел самое простое решение, по крайней мере, в моем случае (Oracle 11.2 в Windows 2008 R2) и хотел поделиться им.

Ошибка, если смотреть непосредственно, указывает, что слушатель не распознает имя службы. Но где он хранит названия сервисов? В %ORACLE_HOME%\NETWORK\ADMIN\listener.ora

"SID_LIST" - это просто список SID и имен сервисов в паре в формате, который вы можете скопировать или найти.

Я добавил проблему Service Name, затем в панели управления Windows "Службы" произвел "Перезапуск" в службе прослушивателя Oracle. Теперь все хорошо.

Например, ваш файл listener.ora может изначально выглядеть так:

. И чтобы он распознал имя службы orcl , вы можете изменить его на:

Ответ 3

У меня была эта проблема на сервере Windows 2008 R2 и Oracle 11g

перейдите в Net Manager > Listener > выберите службы базы данных из combox > "Глобальное имя базы данных" должно быть таким же, как "SID" и "Oracle Home Directory" должны быть правильными.

Если у вас нет какой-либо записи для служб баз данных, создайте ее и установите правильную глобальную базу данных, sid и oracle home.

Ответ 4

Мой дескриптор в 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, то это хороший признак того, что у вас может быть проблема пула соединений).

enter image description here

Ответ 9

Я также столкнулся с такой же проблемой и потратил 3 дня, чтобы выкопать ее. Это происходит из-за неправильной записи службы TNS. Сначала проверьте, можете ли вы подключиться к резервной базе данных из первичной базы данных, используя sql > sqlplus sys @orastand as sysdba (orastand - резервная база данных), если вы не можете подключиться, это проблема с сервисом. Исправьте запись имени службы в файле TNS на начальном конце. Проверьте этот режим в резервной базе данных, если требуется внести изменения и здесь. и убедитесь, что parmater log_archive_dest_2 имеет правильное имя службы.

Ответ 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

Для меня ошибка 12514 была решена после указания правильного SERVICE_NAME. Вы обнаружите, что на сервере в файле tnsnames.ora , который поставляется с тремя предопределенными именами служб (один из них - "XE" ).

Если ошибка SERVICE_NAME=XE неверна, вы получаете ошибку 12514. SERVICE_NAME не является обязательным. Вы также можете оставить его.

Ответ 15

В моем случае в базе данных закончилось дисковое пространство. Это заставило его не отвечать. Как только я выяснил эту проблему, все снова работало.

Ответ 16

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

Я запросил системную базу данных:

выберите * из global_name;

и нашел мой удаленный SID ( "XE" ).

Тогда я мог бы подключиться без каких-либо проблем.

Ответ 17

Ответ 18

Для меня это было вызвано использованием динамического ipadress с использованием установки. Я переустановил Oracle, используя статический ipadress, и тогда все было в порядке

Ответ 19

Перезапуск ВМ работал на меня

Ответ 20

Моя проблема была решена путем замены "SID" в URL на "имя службы" и правильный хост.

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