|
|
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Версия 11 При выполнении commit-а LGWR сбрасывает на диск свой буфер и доводит до клиента, что запись прошла успешно. При этом еще некоторое время DBWR может писать грязные блоки на диск, некоторое время после commit-а. Когда транзакций по сотне в секунду, можно сказать, что DBWR постоянно что-то "догоняет". Если при работе экземпляра произошла порча активного журнала, то возможен ли такой вариант восстановления: 0. Сброс грязных блоков по закомиченным транзакциям в датафайлы (как?); 1. Startup nomount force; 2. Пересоздание control-файла с опцией reuse, но без указания redo активной группы; 3. Открытие экземпляра с resetlogs. Вопросы: 1. При таком восстановлении данные в датафайлах ведь будут рассогласованы, поскольку DBWR писал некоторое время после commit-а, и ничто не гарантирует, что он успел сбросить все грязные блоки на диск, а redo активного нет. 2. Можно ли при обнаружении порчи активного redo принудительно сбросить грязные блоки на диск и какой командой (заставить DBWR скинуть блоки в датафайлы хотя бы по закоммиченным транзакциям )? 3. Если портится только один из членов активной журнальной группы, экземпляр насколько "болезненно" будет на это реагировать? (просто сообщение в алерт кинет с предложением админу почесать репу и добавить/заменить диск, или уйдет в шатдаун аборт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 15:41 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
alter system checkpoint А потом открытие с alter system clear logfiles и resetlogs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 16:17 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Но, естественно, мультиплексировать оперативные логфайлы, даже если они на одном девайсе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 16:19 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Чем отличается порча активного лога при работающем инстансе от порчи не активного? )) ну и разумеется не текущего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 18:20 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровНо, естественно, мультиплексировать оперативные логфайлы, даже если они на одном девайсе Вот у меня из опыта восстановления и падения :-) ...Всегда если испорчен один из группы...всегда испорчен и второй(У меня два..и на разных dev...и на одном и т.д)... Ну вот хоть бы раз повезло... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2018, 18:49 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
DВАЧем отличается порча активного лога при работающем инстансе от порчи не активного? )) ну и разумеется не текущего. Сразу перед тем как на клиента приходит подтверждение от отработке коммита на диск сбрасывается логбуфер (в активный файл). Именно это и гарантирует в случае сбоя восстановление и согласованность данных. А вот в датафайлах на момент коммита еще нет согласованные данных. Если нагрузка невысокая, то велика вероятность, что DBWR успеет тоже быстро все записать. Но если транзакций под сотни в секунду и вдруг стал "испорчен" (физически не читается пишется, или проблемы на уровне файловой системы), то еще не закоммиченные транзакции и не закоммитятся, а вот те, которые уже получили подтверждения по коммиту - потенциально потеряны, из-за асинхронной работы DBWR и порчи того самого активного логфайла. Все, что в неактивном журнале после переключения журнала гарантировано сбрасывается DBWR-ром. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 08:27 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудровalter system checkpoint А потом открытие с alter system clear logfiles и resetlogs Спасибо, проведем испытания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 08:28 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
helgisboxDВАЧем отличается порча активного лога при работающем инстансе от порчи не активного? )) ну и разумеется не текущего. Сразу перед тем как на клиента приходит подтверждение от отработке коммита на диск сбрасывается логбуфер (в активный файл). Именно это и гарантирует в случае сбоя восстановление и согласованность данных. А вот в датафайлах на момент коммита еще нет согласованные данных. Если нагрузка невысокая, то велика вероятность, что DBWR успеет тоже быстро все записать. Но если транзакций под сотни в секунду и вдруг стал "испорчен" (физически не читается пишется, или проблемы на уровне файловой системы), то еще не закоммиченные транзакции и не закоммитятся, а вот те, которые уже получили подтверждения по коммиту - потенциально потеряны, из-за асинхронной работы DBWR и порчи того самого активного логфайла. Все, что в неактивном журнале после переключения журнала гарантировано сбрасывается DBWR-ром.На самом деле, если экземпляр работает, то абсолютно пофиг, активный лог запортился или неактивный -- для сброса данных DBWR-у логи не нужны (за исключением записи с текущий лог) И данные он когда-нибудь да сбросит Другой вопрос, что журнал перейдет в статус FAILED (по-моему) и перестанет использоваться При сломанном текущем журнале (всех членов), экземпляр, естественно, аварийно ляжет, и тогда если были поломаны активные логи, то накатится по ним будет нельзя -- тут, как правило, восстановление из бэкапа и накат до лога Кстати, насчет RESETLOGS я наврал, это немножко другой сценарий (с битыми текущими логами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 08:48 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
irbis_alВячеслав ЛюбомудровНо, естественно, мультиплексировать оперативные логфайлы, даже если они на одном девайсе Вот у меня из опыта восстановления и падения :-) ...Всегда если испорчен один из группы...всегда испорчен и второй(У меня два..и на разных dev...и на одном и т.д)... Ну вот хоть бы раз повезло...Неоднократно бывало на не [очень] важных девелоперских БД при отключении питания -- на одном диске из двух мультиплексированных логов с одним можно было открыться, а с другим нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 08:50 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
[quot Вячеслав Любомудров]helgisboxпропущено... При сломанном текущем журнале (всех членов), экземпляр, естественно, аварийно ляжет, и тогда если были поломаны активные логи, то накатится по ним будет нельзя -- тут, как правило, восстановление из бэкапа и накат до лога Кстати, насчет RESETLOGS я наврал, это немножко другой сценарий (с битыми текущими логами) Стало быть, надеяться на финт ушами не стоит и рассчитываем на стандартный план восстановления ;) Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 09:16 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Если мы переходим к сбою таки не активных, а текущего лога, то поломка-поломке рознь Одно дело, отвалился диск и не прошла целиком запись (то же самое, что аварийный останов экземпляра) -- после примонтирования диска БД прекрасно докатится по всем активным и сколько можно по текущему журналу, откроется и откатит незавершенные транзакции И совсем другое, когда диск отвалился в момент записи, т.е. redo record неконсистентна. После примонтирвания диска БД попробует автоматом накатиться по активным/текущему логам и сломается на применении кривой записи -- и вот из этого ступора ее стандартными путями не выведешь -- только восстановление из бэкапа (или откат по FLASHBACK) и докат до последнего нетекущего журнала (ну или сделать дамп текущего лога и узнать SCN последней нормальной redo record). И RESETLOGS, конечно В этом случае (когда есть вероятность неконсистентной записи) как раз есть смысл сделать дамп текущего лога и если он прошел без ошибок, то запустить обычное/полное восстановление, иначе -- см.выше. Но, как правило, никто этим не занимается, ибо над душой стоят и кричат "открывай скорей" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 09:45 |
|
||
|
Порчка активного redo, варианты восстановления
|
|||
|---|---|---|---|
|
#18+
Если активный лог стал вдруг битым с какого-то перепуга, то оракл может узнать об этом либо при архивировании, либо при попытки на него переключиться. А может и не узнать совсем. Если лог уже заархивирован, то побить его чувствительно для оракла крайне сложно ) , потому что он просто очищается при переключении. Возможно если только покорежить заголовок... да и то не знаю, просечет это оракл или нет, и если просечет не возьмет ли просто другой лог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2018, 11:55 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39663916&tid=1883819]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 370ms |

| 0 / 0 |
