Po wielu godzinach błędnego przekierowania z oficjalnego wsparcia Oracle, zgłębiłem to sam i naprawiłem to. Dokumentuję to tutaj na wypadek, gdyby ktoś miał ten problem.
Aby to zrobić, musisz być użytkownikiem Oracle:
$ su - oracle
Krok 1: Musisz spojrzeć na dziennik alertów. Nie ma go w katalogu / var / log zgodnie z oczekiwaniami. Musisz uruchomić program do odczytu dzienników 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>
Zwróć uwagę na bazę ADR. To nie jest instalacja. Musisz zobaczyć domy, aby móc połączyć się z tym, którego używasz.
adrci> show homes
ADR Homes:
diag/rdbms/cci/CCI
diag/tnslsnr/cci/listener
diag/tnslsnr/cci/start
diag/tnslsnr/cci/reload
CCI jest domem. Ustaw to.
adrci> set home diag/rdbms/cci/CCI
adrci>
Teraz możesz przejrzeć dzienniki alertów. Byłoby bardzo miło, gdyby były one w / var / log, dzięki czemu można łatwo parsować dzienniki. Po prostu przestań chcieć i poradzić sobie z tym interfejsem. Przynajmniej możesz ogonić (i mam nadzieję, że masz bufor przewijania):
adrci> show alert -tail 100
Przewiń do tyłu, aż zobaczysz błędy. Chcesz PIERWSZY błąd. Wszelkie błędy po pierwszym błędzie są prawdopodobnie spowodowane przez pierwszy błąd. W moim przypadku pierwszym błędem było:
ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.
Jest to spowodowane transakcjami. Oracle nie jest przeznaczony do użycia. Jeśli wpychasz do niego dużo danych, zapisywane są dzienniki transakcji. Przechodzą do obszaru plików odzyskiwania. Gdy będzie już pełny (w tym przypadku 50 GB). Potem Oracle po prostu umiera. Zgodnie z projektem, jeśli coś zostanie pomieszane, Oracle zareaguje poprzez wyłączenie.
Istnieją dwa rozwiązania, właściwe i szybkie i brudne. Szybkim i brudnym jest zwiększenie db_recovery_file_dest_size. Najpierw wyjdź z Adrci.
adrci> exit
Teraz przejdź do sqlplus bez otwierania bazy danych, po prostu ją instaluj (możesz to zrobić bez montowania bazy danych, ale i tak ją instaluję).
$ 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
Teraz możesz zwiększyć swój aktualny rozmiar pliku db_recovery_file_dest_size, w moim przypadku do 75G:
SQL> alter system set db_recovery_file_dest_size = 75G scope=both
Teraz możesz ponownie zamknąć i uruchomić ponownie, a wcześniejszy błąd powinien zniknąć.
Właściwą poprawką jest pozbycie się plików odzyskiwania. Robisz to za pomocą RMAN, a nie SQLPLUS lub 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;
Jeśli tak RMAN-06171: not connected to target database
, spróbuj użyć rman target /
zamiast po prosturman
Zaczekaj długo, a Twój dziennik archiwalny (który zajmował tyle miejsca) zniknie. Możesz więc zamknąć / uruchomić bazę danych i wrócić do pracy.
ALTER DATABASE OPEN
i błędy po tym.