Після кількох годин помилок з офіційної підтримки Oracle я самостійно вдавався в це і виправляв це. Я документую це тут, якщо хтось інший має цю проблему.
Щоб зробити що-небудь із цього, ви повинні бути користувачем 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
та помилки після цього.