Немножко о ORA-01578

Если, не дай бог, у вас появилась в логах БД Oracle такая ошибка…. то может быть вам будет полезны несколько моих маленьких заметок по этому вопросу.

Обычно эта ошибка светится в логах altert{SID}.log так:

BD::Oracle::st fetchrow failed: ORA-01578: ORACLE data block corrupted (file # 60, block # 1532186)
ORA-01110: data file 60: '/u09/app/oracle/oradata/{SID}/{FILE_NAME}.dbf'

что это за объект вычисляется следующим запросом:

 sql |  copy code |? 
1
SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME
2
FROM DBA_EXTENTS
3
WHERE FILE_ID = 75 AND 3742009 BETWEEN BLOCK_ID
4
AND BLOCK_ID+BLOCKS −1;

Если это таблица, то строки, находящиеся в этих сегментах, можно попробовать вычислить так:


 sql |  copy code |? 
1
select * from (
2
SELECT rowid, DBMS_ROWID.Rowid_object(ROWID)   "OBJECT_",
3
       DBMS_ROWID.Rowid_relative_fno(ROWID) "FILE_",
4
       DBMS_ROWID.Rowid_block_number(ROWID) "BLOCK_",
5
       DBMS_ROWID.Rowid_row_number(ROWID)   "ROW_",
6
       file_id
7
    FROM {SCHEMA}.{TABLE_NAME}
8
) d where d.block_=3742009 and d.file_=75

Ну пока все, надеюсь что было полезно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

CAPTCHA image
*