«ORA-03113: конец файла в канале связи» при запуске

22

Я читал сообщения здесь, о поддержке Oracle, и где-нибудь еще, я могу найти в течение последних трех дней, и я разочаровался в этой проблеме ...

База данных Oracle зависла. Завершение работы базы данных длилось несколько часов, после чего она вышла. Это не перезапустит. Сервер был перезапущен. Oracle был перезапущен. Идем шаг за шагом: запускается номер запуска, изменяется монтирование базы данных, изменяется открытая база данных и возвращается ORA-03113. Это все на локальном хосте, а не по сети. На машине нет запущенного брандмауэра.

Есть идеи, как обойти эту ошибку ORA-03113? Я разговаривал по телефону с поддержкой в ​​Индии последние 4,5 часа и пока не нашел никого полезного.

kainaw
источник
1
Опубликовать отрывок из журнала предупреждений с ALTER DATABASE OPENошибками после этого.
Миндаугас Риауба
1
Поиск (grep) всех журналов предупреждений между последним успешным запуском и текущим неудачным запуском и поиск ALTER SYSTEM SET за все это время. Может быть, кто-то изменил какой-то параметр экземпляра нестандартным способом.
Кубанчик

Ответы:

35

После нескольких часов неправильной ориентации от официальной поддержки Oracle, я самостоятельно решил эту проблему и исправил ее. Я документирую это здесь на случай, если у кого-то еще есть эта проблема.

Чтобы сделать это, вы должны быть пользователем оракула:

$ su - oracle

Шаг 1: Вам нужно посмотреть журнал предупреждений. Это не в / var / log, как ожидалось. Вы должны запустить программу чтения журнала Oracle:

$ adrci
ADRCI: Release 11.2.0.1.0 - Production on Wed Sep 11 18:27:56 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
adrci>

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

adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload

ТПП это дом. Установите это.

adrci> set home diag/rdbms/cci/CCI
adrci>

Теперь вы можете посмотреть журналы оповещений. Было бы очень хорошо, если бы они были в / var / log, чтобы вы могли легко разобрать логи. Просто перестаньте хотеть и разберитесь с этим интерфейсом. По крайней мере, вы можете хвост (и я надеюсь, у вас есть буфер прокрутки):

adrci> show alert -tail 100

Прокрутите назад, пока не увидите ошибки. Вы хотите первую ошибку. Любые ошибки после первой ошибки, вероятно, вызваны первой ошибкой. В моем случае первая ошибка была:

ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.

Это вызвано транзакциями. Oracle не предназначен для использования. Если вы вставите в него много данных, он сохранит журналы транзакций. Те идут в область файла восстановления. Как только это заполнено (50 ГБ заполнено в этом случае). Тогда Oracle просто умирает. По замыслу, если что-то испортится, Oracle ответит выключением.

Есть два решения, правильное и быстрое и грязное. Быстрым и грязным является увеличение db_recovery_file_dest_size. Во-первых, выйдите из adrci.

adrci> exit

Теперь зайдите в sqlplus, не открывая базу данных, просто монтируя ее (вы можете сделать это без монтирования базы данных, но я все равно ее монтирую).

$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 11 18:40:25 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> startup mount

Теперь вы можете увеличить свой текущий db_recovery_file_dest_size, увеличенный до 75G в моем случае:

SQL> alter system set db_recovery_file_dest_size = 75G scope=both

Теперь вы можете снова завершить работу и запустить эту предыдущую ошибку.

Правильное решение состоит в том, чтобы избавиться от файлов восстановления. Вы делаете это с помощью RMAN, а не SQLPLUS или ADRCI.

$ rman
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Sep 11 18:45:11 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
RMAN> backup archivelog all delete input;

Если у вас есть RMAN-06171: not connected to target database, чем пытаться использовать rman target /вместо простоrman

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

kainaw
источник
Я не нахожу команду adrci на моем сервере Oracle Linux. Как мне его установить? Спасибо.
3
Благодарность! Оно работает. Но правильная команда для rman: export ORACLE_SID=my_oracle//rman target /
Чтобы добавить мои 2 цента - вы можете проверить эту статью здесь, в которой есть команда, которую вы можете использовать RMAN, чтобы очистить область архива, а также некоторые другие вещи. Осторожнее, поскольку это также очистит точки восстановления, если БД по какой-то причине открыта (последний бит): the1403.github.io/RMAN-cleanup-logs
g00dy