Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Восстановление базы из горячего дампа


Автор: mihalych74 15.1.2010, 05:06
Проблема - Block Corrupted. Как восстановить? Flash Recovery не работает. RMAN не может восстановить блок (пишет,архивной копии нет). Есть Клон жесткого диска с базой от 12.12.09 и горячий дамп на 31.12.09 (Восстановить хотя бы на этот момент).
 Есть ли возможность восстановить базу в текущем состоянии? 
Если нет, как вписать горячий дамп от 31.12.09 в базу от 12.12.09? 
(В Oracle не силен. Пытался импортировать дамп командой imp - много ошибок - в основном - ....уже существует (видимо, старая база не дает заменять существующую информацию)

Автор: ToshaCh 15.1.2010, 10:23
Ага, бэкапы значит религия не позволяет делать.

Путь к успеху:
1. Уволить ответственного админа, с разгромной записью в трудовой. Если вы админ, то начать разбег к ближайшей стене - достойное продолжение карьеры. 
2. Разобраться что произошло. 100 к 1, что это проблема железа. По опыту чаще всего такая задница бывает на фиберчанеловских хранилищах, когда какая-нить тетка Дуся провод дёргает шваброй (тоже уволить не помешает за такое) или свитч/контролер сбоит. Грубо говоря если проблема существует и сейчас, вы рискуете навсегда потерять базу, т.к. любая операция записи имеет непредсказуемый результат.
3. Разобраться  с количеством повреждений. Для этого либо сделать рманом verify database либо внимательно просмотреть алерт лог. Необходимо выудить номера повреждённых файлов и блоков. Далее проясняем с помощью следущего запроса что собственно повредилось.
Код
SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE FILE_ID = 24 AND 208009 BETWEEN BLOCK_ID AND (BLOCK_ID+BLOCKS -1)

4. Если повределись индексы то зашибись. Просто дропаем и создаём занаво. Если таблицы, то это хуже. Обращаемся к пакету dbms_repair (примеров в сети полно) и для начала пытаемся собственно зарекаверить блок (шанс, честно говоря, 1 на 1000000). Если не получится, "забываем" про блок с помощью того же пакета, т.е. при обращении к таблице этот блок будет пропускаться.
5. Делаем бэкап c помощью rman.
6. Таблицу (таблицы) переименовываем, а затем создаём с прежним именем с помощью create table as select. Разумеется перед переименованием таблицы нужно разобрать со связанными индексами, констреинтами и т.д. 
7. Если данные уж очень важные, то вытягиваем из последнего дампа таблицу (разумеется кладём её рядом с другим именем) и начинаем колдовать над сравнением. 
8. Ну и традиционный совет. Наймите админа. Оракл не просто так стоит сотни тысяч рублёв. Система реально мощная и сложная. Если человек не нужен на полный день, найдете админа на удалёнку. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)