powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-01578: ORACLE data block corrupted
17 сообщений из 92, страница 4 из 4
ORA-01578: ORACLE data block corrupted
    #39667662
alwan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.Допустим у меня есть таблица tmp2, которая гарантированно размещается на поврежденных блоках.

По идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667664
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть в таблице нужно отключить авторасширение и вставлять строки в цикле, пока таблица не переполнится?
Выделенный размер таблицы сейчас 3,5ГБ, таблица состоит из одного number-поля.
Мне нужно будет под миллиард строк вставить, это само по себе может стать проблемой.

А нельзя ли создать новый data-файл, а старый удалить?
Или это большая нагрузка на сервер будет?
Размер data-файла 32 ГБ, число блоков 4 миллиарда.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667668
alwan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.То есть в таблице нужно отключить авторасширение и вставлять строки в цикле, пока таблица не переполнится?
Выделенный размер таблицы сейчас 3,5ГБ, таблица состоит из одного number-поля.
Мне нужно будет под миллиард строк вставить, это само по себе может стать проблемой.

А нельзя ли создать новый data-файл, а старый удалить?
Или это большая нагрузка на сервер будет?
Размер data-файла 32 ГБ, число блоков 4 миллиарда.

Как я понимаю вы уже выделили нужный экстент с корумпированным блоком для таблицы. Далее просто заполняйте ее, можно из нее самой же, пока нужный блок не починится. В идеале, при создании такой таблицы (для починки блоков) выставить PCTFREE 99 - тогда вставка данных до нужного блока пройдет быстрее.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667669
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alwanAlibek B.Допустим у меня есть таблица tmp2, которая гарантированно размещается на поврежденных блоках.

По идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись.Блок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667674
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровБлок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно
Но утилита dbv находит ошибки в файле данных, хотя найденные блоки уже принадлежат таблице.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667675
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Вячеслав ЛюбомудровБлок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно
Но утилита dbv находит ошибки в файле данных, хотя найденные блоки уже принадлежат таблице.По приведенному тобой вывводу DBV там никаких ошибок нет
А то, что они остались в V$DATABASE_BLOCK_CORRUPTION, так я тебе сказал как ее почистить
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667678
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как же нет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
$ cat bm_index02.log 

DBVERIFY: Release 10.2.0.4.0 - Production on Пт Июн 29 15:09:00 2018

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


DBVERIFY - Запуск верификации : FILE = /u01/oradata/billing/bm_index02.dbf


Стр. 1771196 - influx - скорее всего нарушен носитель
Corrupt block relative dba: 0x025b06bc (file 9, block 1771196)
Fractured block found during dbv: 
Data in bad block:
 type: 6 format: 2 rdba: 0x025b06bc
 last change scn: 0x0002.7236115b seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x8c4a0602
 check value in block header: 0x2c5d
 computed block checksum: 0xb6fd


Стр. 2512552 - influx - скорее всего нарушен носитель
Corrupt block relative dba: 0x026656a8 (file 9, block 2512552)
Fractured block found during dbv: 
Data in bad block:
 type: 6 format: 2 rdba: 0x026656a8
 last change scn: 0x0002.71f7625e seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x1e6d0602
 check value in block header: 0x1af1
 computed block checksum: 0x51c4


Стр. 3792555 - influx - скорее всего нарушен носитель
Corrupt block relative dba: 0x0279deab (file 9, block 3792555)
Fractured block found during dbv: 
Data in bad block:
 type: 6 format: 2 rdba: 0x0279deab
 last change scn: 0x0002.7cf1f41a seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0xa3b90602
 check value in block header: 0xea08
 computed block checksum: 0xaee7

Стр. 3921835 - influx - скорее всего нарушен носитель
Corrupt block relative dba: 0x027bd7ab (file 9, block 3921835)
Fractured block found during dbv: 
Data in bad block:
 type: 6 format: 2 rdba: 0x027bd7ab
 last change scn: 0x0002.7cf1d03c seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x84270601
 check value in block header: 0x1af5
 computed block checksum: 0x6490



DBVERIFY - верификация выполнена

Всего страниц проверено         : 4194302
Всего страниц обработано (Data) : 45
Всего сбойных страниц  (Data) : 0
Всего страниц обработано(Index): 4182201
Всего сбойных страниц (Index): 0
Всего обработанных страниц (другие): 8571
Всего обработано страниц (сег.)  : 0
Всего страниц со сбоями (сег.)  : 0
Всего пустых страниц             : 3481
Всего страниц, помеч.наруш.   : 4
Всего входных страниц            : 4
Наибольший SCN блоков        : 2137486455 (2.2137486455)
Я говорил о том, что для указанных сбойных блоков (1771196, 2512552, 3792555, 3921835) в таблице dba_extents нет объектов.
И мне непонятно, как исправить такие блоки.
Если запустить бэкап через rman, то без выставленного maxcorrupt он завершится с ошибкой, а с выставленным параметром он заполняет V$DATABASE_BLOCK_CORRUPTION данными, совпадающими с результатом dbv.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667679
alwan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудровalwanпропущено...


По идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись.Блок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно

Я сталкивался с исправлением блоков вручную (Standard Edition). Если блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные. Просто аллоцирование не исправляло блок.
В этом блоге, например, рекомендуется такой же метод: https://blog.rackspace.com/clearing-unused-corrupt-nologging-blocks

Если можете дать ссылку на доку или ноту, где говорится, что блок "чинится" при аллоцировании - было бы интересно почитать, так как практика пока говорит обратное
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667681
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я сделал таблицу TMP2 и расширял ее, пока в нее не попали сбойные блоки (во-первых чтобы эти блоки были сопоставлены с объектом, а во-вторых чтобы они часом не сопоставились с какими-нибудь рабочими объектами).
Теперь я хочу как-нибудь эти ошибки исправить, но не получается.
analyze table ошибок не находит.
DBMS_REPAIR.CHECK_OBJECT ошибок не находит (возвращает CORRUPT_COUNT=0).
dbv ошибки находит, но не исправляет.
rman наверное смог бы найти и исправить, но я опасаюсь использовать этот инструмент без подробной инструкции.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667683
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alwanЕсли блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные
А нет ли возможности указать, в какой блок нужно вставлять данные?
А то меня беспокоит перспектива вставлять миллиард строк.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667686
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alwanПо идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись.
Похоже на то.
Когда таблица TMP2 была пустая (хоть и занимала 3,5ГБ), DBMS_REPAIR.CHECK_OBJECT отрабатывал моментально, но не находил ошибок.
Сейчас я вставил в таблицу 10кк записей и снова запустил DBMS_REPAIR.CHECK_OBJECT — хоть ошибок по прежнему не нашлось, но процедура работала какое-то время. То есть эта процедура явно проверяет не все аллоцированное пространство, а только занятое.
Теперь нужно придумать, как бы заполнить эту таблицу данными и при этом не положить сервер.
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667687
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.А то меня беспокоит перспектива вставлять миллиард строк.
Ну сделайте таблицу с широкой строкой... Скажем, 3-4 поля char(2000).
Дальше сгенерить несколько строк и "insert into myTab select * from myTab" до победы (удваивая число строк на каждой операции).
При 8К блоке будет одна строчка на блок :).
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667691
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alwanВячеслав Любомудровпропущено...
Блок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно

Я сталкивался с исправлением блоков вручную (Standard Edition). Если блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные. Просто аллоцирование не исправляло блок.
В этом блоге, например, рекомендуется такой же метод: https://blog.rackspace.com/clearing-unused-corrupt-nologging-blocks

Если можете дать ссылку на доку или ноту, где говорится, что блок "чинится" при аллоцировании - было бы интересно почитать, так как практика пока говорит обратноеДа, я ошибся Надо действительно вставлять

2Alibek B.
Сделай PCTFREE 99 и поле char(100) -- как раз по одной строке в блок войдет
Только не забудь авторасширение файла запретить
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667692
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудровalwanпропущено...


Я сталкивался с исправлением блоков вручную (Standard Edition). Если блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные. Просто аллоцирование не исправляло блок.
В этом блоге, например, рекомендуется такой же метод: https://blog.rackspace.com/clearing-unused-corrupt-nologging-blocks

Если можете дать ссылку на доку или ноту, где говорится, что блок "чинится" при аллоцировании - было бы интересно почитать, так как практика пока говорит обратноеДа, я ошибся Надо действительно вставлять
Похоже, спутал с первоначальным форматированием при увеличении файла

Полезная нота: How to Format Corrupted Block Not Part of Any Segment (Doc ID 336133.1)
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667695
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousПри 8К блоке будет одна строчка на блок :).
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
create table dropme_tv (a char(2000)) pctfree 99;
Table created
insert into dropme_tv (a) values('a');
1 row inserted
begin
  for i in 1..10 loop
    insert into dropme_tv select * from dropme_tv;
  end loop;
end;
/
PL/SQL procedure successfully completed
select dump(a, 1016) from dropme_tv where rownum=1;
DUMP(A,1016)
--------------------------------------------------------------------------------
Typ=96 Len=2000 CharacterSet=CL8MSWIN1251: 61,20,20,20,20,20,20,20,20,20,20,20,2
select count(*) allocated_rows
     , count(distinct dbms_rowid.rowid_relative_fno(rowid)||'.'|| dbms_rowid.rowid_block_number(rowid)) used_blocks
  from dropme_tv
  ;
ALLOCATED_ROWS USED_BLOCKS
-------------- -----------
          1024        1024
drop table dropme_tv purge;
Table dropped

SQL> 
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39667769
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заполнил файл данными (по этому совету 21531798 ), запустил CHECK_OBJECT — ошибок не найдено.
Запустил dbv на файле данных, в котором находились поврежденные блоки — ошибок не найдено.
Ошибки были логические и при пересоздании блоков (в процессе сохранения данных) были автоматически исправлены?
Или я что-то не то сделал?
...
Рейтинг: 0 / 0
ORA-01578: ORACLE data block corrupted
    #39726319
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращение к истокам.
Когда случилась описанная проблема с жестким диском в RAID, я решил сразу заказать диски на замену и постепенно заменить их все в массиве.
Но данная модель дисков уже не производится, поэтому нашел фирму-поставщика не сразу.
Потом поставщик прислал не те диски.
Потом прислал те диски, но б/у (восстановленные, хоть и на заводе, с надписью "certified repaired hdd").
Затем очень долго высылал замену, но все же вчера посылка с дисками наконец приехала.
А сегодня утром в массиве RAID-5 вылетел еще один диск.

Диск я уже заменил, сейчас он перестраивается.
Диагностические процедуры из топика я выполнял, вроде бы ошибок нет ни в логах, ни в результатах dbv.
Пронесло? Или целостность БД можно проверить как-то еще?
...
Рейтинг: 0 / 0
17 сообщений из 92, страница 4 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-01578: ORACLE data block corrupted
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]