08.04.2014 09:22
OlegON
 
10.2.0.4
Пользователь принес ошибку
Цитата:
ORA-01578: ORACLE data block corrupted (file # 74, block # 51611)
ORA-01110: data file 74: '/u04/oradata/dwh/system03.dbf'
Путем нехитрого запроса, который тут на форуме тоже есть, получаем,
Код:
SELECT distinct d.SEGMENT_TYPE||':'||d.OWNER||'.'||d.SEGMENT_NAME
FROM DBA_EXTENTS d
where 74=d.file_id and 51611 between d.block_id and d.block_id+d.blocks-1;
что это объект SYS.I_HH_OBJ#_INTCOL#, т.е. индекс на таблице HIST_HEAD$.
Пнул rebuild, получил ORA-00701, ожидаемо. Задумался.
Код:
SQL> analyze index SYS.I_HH_OBJ#_INTCOL# validate structure;
analyze index SYS.I_HH_OBJ#_INTCOL# validate structure
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 74, block # 51611)
ORA-01110: data file 74: '/u04/oradata/dwh/system03.dbf'

SQL> analyze table HIST_HEAD$ validate structure cascade;
analyze table HIST_HEAD$ validate structure cascade
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 74, block # 51611)
ORA-01110: data file 74: '/u04/oradata/dwh/system03.dbf'
без каскада валидация проходила.
Цитата:
DBVERIFY - Verification starting : FILE = /u04/oradata/dwh/system03.dbf
Page 51611 is marked corrupt
Corrupt block relative dba: 0x1280c99b (file 74, block 51611)
Bad header found during dbv:
Data in bad block:
type: 4 format: 1 rdba: 0x06000000
last change scn: 0x2201.00000801 seq: 0x13 flg: 0x13
spare1: 0x0 spare2: 0x0 spare3: 0x5448
consistency value in tail: 0xa7940601
check value in block header: 0x4155
block checksum disabled

DBVERIFY - Verification complete

Total Pages Examined : 102816
Total Pages Processed (Data) : 33452
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 49997
Total Pages Failing (Index): 0
Total Pages Processed (Other): 50
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 19316
Total Pages Marked Corrupt : 1
Total Pages Influx : 0
Highest block SCN : 4181817441 (15.4181817441)
"Забавно" было то, что RMAN отчаянно не видел сбойный блок (validate check logical), хотя бекап падал. Ввиду некоторой срочности запускать blockrecover не хотелось, подошло время регламентных работ, потому сделал немного через одно место.
Код:
shutdown immediate
startup upgrade
alter index SYS.I_HH_OBJ#_INTCOL# unusable;
alter index SYS.I_HH_OBJ#_INTCOL# rebuild;
shutdown immediate
startup
после чего завелось все нормально... Соответственно, для поправки "дырки" в файле запустил
Код:
blockrecover datafile 74 block 51611;
08.04.2014 15:32
OlegON
 
В общем, blockrecover оказался слишком долгим, чтобы я утерпел ждать восстановления пустого блока.
Создал и залил тестовыми данными в SYSTEM, скриптом проверяя заполненность сбойного блока
Код:
select * from dba_free_space where file_id = 74 and 51611 between block_id and block_id + blocks - 1;
соответственно, как заполнился, тестовую табличку грохнул. При заполнении данными блок переформатировался.
Как заполнить тестовыми данными БД
Часовой пояс GMT +3, время: 12:57.

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