"ORA-03113: кінець файлу на каналі зв'язку" при запуску


22

Я читав публікації тут, про підтримку Oracle, і деінде я можу знайти останні три дні, і я відмовився від цієї проблеми ...

База Oracle висіла. Вимкнення бази даних просиділо кілька годин, після чого вона вийшла. Він не перезапуститься. Сервер був перезапущений. Oracle було перезапущено. Переходимо крок за кроком: працює без запуску, змінюється робота з монтажу бази даних, зміна відкритої бази даних повертається ORA-03113. Це все на localhost - не через мережу. У апараті не працює жоден брандмауер.

Будь-яка ідея, як пройти цю помилку ORA-03113? Я спілкувався по телефону з підтримкою в Індії протягом останніх 4,5 годин, і поки не знайшов когось корисного.


1
Опублікувати витяг із журналу сповіщень ALTER DATABASE OPENта помилки після цього.
Міндаугас Riauba

1
Шукайте (grep) у всіх журналах оповіщення між останнім успішним запуском та поточним невдалим запуском, і шукайте ALTER SYSTEM SET за весь цей проміжок часу. Можливо, хтось змінив якийсь параметр екземпляра нестандартним способом.
kubanczyk

Відповіді:


35

Після кількох годин помилок з офіційної підтримки 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

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


Я не знаходжу команду adrci на моєму сервері oracle linux. Як мені це встановити? Спасибі.

3
Спасибі! Це працює. Але правильна команда export ORACLE_SID=my_oraclerman target /

Щоб додати мої 2 центи - ви можете перевірити цю статтю, у якій є команда, з якою ви можете використовувати RMAN, щоб очистити область архіву, а також деякі інші речі. Будьте обережні, оскільки також очистять точки відновлення, якщо БД відкрито з якихось причин (останній біт): the1403.github.io/RMAN-cleanup-logs
g00dy,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.