После нескольких часов неправильной ориентации от официальной поддержки 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
Подождите долго, и ваш архив (который занимал все это пространство) исчезнет. Таким образом, вы можете отключить / запустить вашу базу данных и вернуться к работе.
ALTER DATABASE OPEN
ошибками после этого.