06.09.2011 07:43
AlexeyF
 
ORA-1172 редолог накрылся


Супермаг
ORACLE 9.2.0.8
включен ARCHIVELOG
настроен бакап полный раз в день (ночью), автобакап контролфайлы и SPFILE

После видимо некорректной остановки стал наблюдаться такой эффект - при запуске оракл база в MOUNTED, в алертлоге:
Completed redo scan
10776 redo blocks read, 1554 data blocks need recovery
Mon Sep 05 14:02:42 2011
Started recovery at
Thread 1: logseq 2689, block 96026, scn 0.0
Mon Sep 05 14:02:45 2011
Recovery of Online Redo Log: Thread 1 Group 3 Seq 2689 Reading mem 0
Mem# 0 errs 0: D:\ORACLE\ORADATA\DBAMIK06\REDO03.LOG
Mem# 1 errs 0: E:\ORACLE\ORADATA\DBAMIK06\REDO03.LOG
RECOVERY OF THREAD 1 STUCK AT BLOCK 7950 OF FILE 2
ORA-1172 signalled during: alter database open...

Естественно сделал chkdsk /f (были ошибки) и дальше уже
1- restore controlfile from 'последний автобакап'
2- restore database;
база вернулать к полному бакапу последнему
3- recover database;
4- alter database open;

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

Вопрос в том, что в такой ситуации посоветуете ?
Я думаю вариант откатиться к ночному бакапу и потерять день - вроде как 100% результат.
но вот можно ли как то так:
recover database until sequence "КАКОЙТО НОМЕР ИЗ ПОСЛЕДНИХ" Thread 1;
и проверить после этого остались или нет проблемные куски базы, после не залогигенных операций или база в отличном состоянии ?

Или может есть возможность не восстанавливая базу, сразу на этапе ORA-1172 сделать откат REDO03.LOG, точнее откатить операции , которые попали в этот редо.
Т.е. есть ли что то типа откатиться до REDO02.LOG, без restore database ?
06.09.2011 07:48
OlegON
 
Мое сопровождение базы я тебе, вроде, уже предлагал... А то ужас какой-то :)
Написал очень много о том, как ты мучился, но упустил суть главное - текущую проблему. "Отсутствует какой-то блок" - не описание проблемы ни разу. Он там много где и по каким причинам может отсутствовать. Посоветую привести реальную ошибку, а там уже и разбирать ее будем. Редо откатывать не получится.
07.09.2011 04:31
AlexeyF
 
Я жеж и говорю - исходная ошибка:
Mem# 0 errs 0: D:\ORACLE\ORADATA\DBAMIK06\REDO03.LOG
Mem# 1 errs 0: E:\ORACLE\ORADATA\DBAMIK06\REDO03.LOG
RECOVERY OF THREAD 1 STUCK AT BLOCK 7950 OF FILE 2
ORA-1172 signalled during
И при этом ошибки chkdsk, значит было аварийное отключение во время выполнения какой то операции. Смысла нет в такой ситуации в блоках копаться.
Вопросов два, можно както откатить незаконченную операцию, в рез-те которой редолог в нерабочем состоянии оказался. Понимаю так что в связи с тем что редо умер - откатиться не получится - так или не так?

При восстановлении из бакапа и накате логов столкнулся с тем что были операции, которые не попали в лог. Ну не зафиксил я ошибку, в логах оракла её не было. Выдавалась она при запуске супермага. Конкретный смысл я привёл - блок данных отсутствует, след строка это могло произойти из-за выполнения команды с параметром NOLOG. Вопрос есть ли способ после наката логов до какой то временной метки, проверять базу на наличие таких блоков, есть ли такая команда или скрипт (я не нашёл пока) ?
По поводу сопровождения базы мы уж общаемся, в скором времени будет. Но это не одна из этих баз - это магазина база. Их много и сопровождать придётся мне.
07.09.2011 07:36
OlegON
 
не-не-не, про редо пока забудь. Ошибка к нему не относится, если накат прошел нормально. OPEN RESETLOGS делал?
Цитата:
AlexeyF К сожалению не зафиксировал, но смысл в том что отсутствует какой то блок, и вероятно это результат выполнения операции в NOLOG режиме.
чтобы понимать, что ты там натворил, надо разобрать вот эту ошибку.
А на конкретный твой вопрос по времени наката, я уже писал тут. Правда, что-то я не указал там ничего про непосредственно восстановление, просто торопился, перекидывая старые записи.
07.09.2011 16:48
AlexeyF
 
Да делал OPEN RESETLOGS

Нашёл в супермаговском логе ошибку, которая вылазила после
restore database;
recover database;

сообщение: "ORA-01578: ORACLE data block corrupted (file # 7, block # 47301)
ORA-01110: data file 7: 'D:\ORACLE\ORADATA\DBAMIK06\USERS03.DBF'
ORA-26040: Data block was loaded using the NOLOGGING option


Восстановление RECOVER DATABASE UNTIL time или recover database until sequence или ещё какой способ наката после восстановления из полного бакапа это понятно. Я спрашиваю есть какой то способ проверить после этого базу на наличие или отсутствие:
ORA-01578: ORACLE data block corrupted
ORA-26040: Data block was loaded using the NOLOGGING option

Оракл то говорит что надо дропнуть объект, в который входит этот блок. описание

Ещё вопрос появился.
В Oracle 10 можно избавиться от ORA-01578 если установить force_logging=NO, понимаю так чтобы все подряд операции писалось в лог. А аналогичный параметр для ORACLE 9.2.0.8 есть ? (а то я не нашёл похожего)
07.09.2011 16:55
OlegON
 
force_logging=YES если уж на то пошло, только не надо это делать, если у тебя стендбая нет, поставь себе оптимизатор, он тебе проверит структуру на поврежденные блоки. Выясни, какой объект повредился. Прочти тему тут "RMAN рулит". Ты не обижайся, но знания у тебя нулевые, даже понять трудно логику твоих действий.
07.09.2011 18:37
AlexeyF
 
читал я рман рулит да пропустил запрос просмотра битых блоков в базе.
Я так понял что блок ORA-01578 с ORA-26040: Data block was loaded using the NOLOGGING option нельзя восстановить RMAN'ом, только пересоздать объект.
Поэтому всё таки лучше было восстановить базу на момент последнего полного бакапа без наката логов. Собственно так и сделал сразу.
А я и не говорю что знаний вагон, задаю вопросы в процессе обучения.
07.09.2011 18:40
AlexeyF
 
База то работает и оптимайзер крутится на ней и до той нештатной перезагрузки крутился. Хотел только на будущее понять есть другой способ такую базу поднять или нет
07.09.2011 19:04
OlegON
 
Ну помимо просто запуска оптимизатора надо смотреть его логи. Он перед Summary пишет что-то вроде "Corruption : marked:0/media:0/logic:0", вот у тебя там не нули.
Повторяю, прежде чем ты там соберешься что-то дропать, скажи, какой объект повредился.
08.09.2011 05:52
AlexeyF
 
Client number: 151

08.09.11 10:41:40 -- ***************** Summary *****************
08.09.11 10:41:44 -- Security mode : 1 Registered since: 2010-10-25 19:21:36.0
08.09.11 10:41:45 -- Startup time : 2011-09-08 09:09:10.0 (0) Oracle : 9.2.0.8.0
08.09.11 10:41:46 -- Last backup checkpoint : 2011-09-08 01:30:03.0 (0) Corruption : marked:/media:/logic:
08.09.11 10:41:47 -- Last analyzed : 2011-09-02 04:44:12.0 (1226) Invalids : 0 Oldest non-organized object : 2011-09-02 04:41:12.0 Last system stats :
08.09.11 10:41:49 -- Last transfer : null (null) Last calculation : null (null)


Corruption вообще цифирек не пишет. Может это кстати глюк.
Часовой пояс GMT +3, время: 15:26.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.