Oracle 19c: ошибка Oracle 12514, подключение к БД невозможно

в моей локальной установке oracle 19c (Windows Server 2016) все работало нормально до обновления Windows с этой недели. С тех пор я получаю сообщение об ошибке ORA-12514 — TNS:listener в настоящее время не знает об услуге, запрошенной в дескрипторе подключения, когда я пытаюсь подключиться к БД.

Мой слушатель.ора:

listener.ora

Моя служба прослушивания Windows работает: введите здесь описание изображения

Что подозрительно, так это то, что утилита lsnrctl НЕ слушает мое имя службы, она просто перечисляет EXTPROC1521: < img src="https://i.stack.imgur.com/4dvAh.png" alt="введите здесь описание изображения" />

Всякий раз, когда я пытаюсь подключиться к базе данных, я получаю: введите здесь описание изображения

Я никак не могу подключиться к базе данных, ни с обычным именем пользователя, ни с sys или system. Я попытался поиграть с listener.ora и перезапустил службу Windows, но все безрезультатно :-( Не могли бы вы мне помочь?


person bluefox    schedule 19.02.2021    source источник


Ответы (2)


Ваша база данных находится в открытом режиме? ПРИМЕЧАНИЕ! Ваша служба базы данных Windows может быть запущена, но база данных может находиться в любом из следующих режимов: open|mount|nomount|down. Убедитесь, что ваша база данных находится в открытом режиме. Как только db перейдет в открытый режим, база данных зарегистрирует свои службы для слушателя, и вы сможете войти в систему.

Переведите базу данных в открытый режим:

C:\>set ORACLE_SID=<MYSID>
C:\>sqlplus / as sysdba
SQL>startup

журнал предупреждений

Журнал предупреждений базы данных — это ваш файл goto для проверки работоспособности ядра базы данных.
Журнал предупреждений базы данных сообщит, почему база данных не может перейти в открытый режим после перезапуска. (Возможно, из-за недостаточного размера FRA (зона быстрого восстановления))

Найти журнал предупреждений — это кошмар, поэтому я создал функцию bash несколько лет назад.

declare -f alog
alog ()
{
    less -r ${ORACLE_BASE}/diag/rdbms/$(echo ${ORACLE_SID} | tr '[:upper:]' '[:lower:]')*/${ORACLE_SID}/trace/alert_${ORACLE_SID}.log
}

fra.sql

--------------------------------------------------------------------------------
-- name:    fra.sql
-- purpose: Display information about the Fast Recovery Area (FRA)
-- author:  Bjarte Brandt
-- date:    09.03.2010
-- remarks:
-- Change size:
-- alter system set db_recovery_file_dest_size=<size> scope=both
--------------------------------------------------------------------------------
col name format a60
col used format 99.99 heading 'Used %'

select
  name,
  floor(space_limit / 1024 / 1024) "Size MB",
  ceil(space_used  / 1024 / 1024) "Used MB",
  (space_used/space_limit) * 100 used
from
  v$recovery_file_dest
order by name;

select
  file_type,
  percent_space_used,
  percent_space_reclaimable,
  number_of_files
from
  v$flash_recovery_area_usage;

Если вы сейчас на 100%, вам нужно решить, что делать с базой данных в режиме архивного журнала. Вы можете реализовать стратегию резервного копирования, отключить область быстрого восстановления, перевести базу данных в режим без архивирования или изменить размер FRA — все варианты зависят от варианта использования.

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

Удачи!

person Bjarte Brandt    schedule 19.02.2021
comment
Я сделал, как вы предложили. cmd сказал мне, что экземпляр ORACLE запущен, затем перечислил некоторые размеры базы данных, а затем сказал, что база данных смонтирована. и, наконец, сказал ORA-03113: конец файла на канале связи Что это значит? - person bluefox; 19.02.2021
comment
ORA-03113 - нам нужно увидеть последние сообщения о выключении и запуске из вашего журнала предупреждений. Когда я погуглил запуск оракула ORA-03113 (почему вы этого не сделали?), я получил ответ, который сводился к тому, что FRA был заполнен, и мне нужно было запустить rman backup archive или удалить все входные данные. Но нам действительно нужно видеть эти сообщения журнала предупреждений. - person EdStevens; 19.02.2021
comment
Пожалуйста, смотрите мой ответ ниже - person bluefox; 19.02.2021

Наконец решил мою проблему, следуя этой инструкции: https://www.programmersought.com/article/48144147987/

Резюме:

  • Выключение базы данных командой shutdown
  • Запустите базу данных, но смонтируйте ее при запуске, чтобы предотвратить попытку ее открытия.
  • Сделайте выбор * из v$log, чтобы просмотреть журналы повторов.
  • Выполните восстановление путем восстановления базы данных до времени «ГГГГ-ММ-ДД ЧЧ:ММ:СС»; с датой и временем в журнале повторов, помеченном как ТЕКУЩИЙ.
  • Система должна сообщить о завершении восстановления носителя.
  • Затем сделайте изменить базу данных, откройте resetlogs;. Это сбрасывает все активные повторные журналы и открывает базу данных.
  • Затем выключите базу данных
  • Затем запустите базу данных с помощью запуска комментария (без опции)
  • Теперь система должна сообщить об открытии базы данных.
person bluefox    schedule 19.02.2021
comment
Я думаю, вам следует последовать совету @EdStevens. Вам необходимо определить размер области быстрого восстановления. Пожалуйста, посмотрите в журнал предупреждений базы данных. я отредактирую свой ответ - person Bjarte Brandt; 20.02.2021
comment
Это именно то, что я наконец сделал. Следуя инструкциям в ссылке, которую я разместил, я смог снова открыть свою базу данных, а затем увеличил FRA. В будущем я буду внимательно следить за фактическим размером FRA. - person bluefox; 21.02.2021