powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ora-01578
25 сообщений из 30, страница 1 из 2
Ora-01578
    #39563096
kabanasy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Помогите понять из-за чего возникла проблема и как ее решить.
Есть база версии 11.2.0.4, вышел из строя жесткий диск и базы не стало. Благо резервная копия и архивлоги лежали в удаленном месте и база была восстановлена из резервной копии. Все бы хорошо, но после восстановления при инсерте данных в одну из таблиц стало вываливаться:
Ora-01578 data block corrupted
Ora-26040 data block was loaded using the NOLOGGING option.
...
Рейтинг: 0 / 0
Ora-01578
    #39563097
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
база была восстановлена из резервной копии

Подробнее.
Обычно после восстановления из бэкапа не бывает коррумпированных блоков.
...
Рейтинг: 0 / 0
Ora-01578
    #39563102
kabanasy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так в том то и дело. Какая инфа нужна? База восстановлена из фулбэкапа и накатаны архивлоги до момента сбоя. Коррупционные блоки в LOB сегментах.
...
Рейтинг: 0 / 0
Ora-01578
    #39563108
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabanasyOra-26040 data block was loaded using the NOLOGGING option.RTFM* Action: Drop the object containing the block.
...
Рейтинг: 0 / 0
Ora-01578
    #39563113
kabanasy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалить таблицу? Не вариант!
...
Рейтинг: 0 / 0
Ora-01578
    #39563121
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabanasyУдалить таблицу? Не вариант!Боржоми пить всё равно уже поздно.
...
Рейтинг: 0 / 0
Ora-01578
    #39563381
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabanasyКоррупционные блоки
dmdmdmкоррумпированных блоков.

Вы точно не из следственного комитета?
Ну нет такого понятия в Oracle - "коррумпированные" или "коррупционные" блоки.
Есть corrupted blocks, по-русски - поврежденные блоки.
...
Рейтинг: 0 / 0
Ora-01578
    #39563646
Виталий Перевозчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бекап со стендбая делали или с primary?
...
Рейтинг: 0 / 0
Ora-01578
    #39563651
Виталий Перевозчиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще проверить надо бекапы командой VALIDATE
...
Рейтинг: 0 / 0
Ora-01578
    #39564012
kabanasy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стендбая нет, только primary!
Backup validate database проходит на ура!
...
Рейтинг: 0 / 0
Ora-01578
    #39564014
Тролин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabanasy,
как вариант прочекать базу
https://oracle-base.com/articles/misc/detect-and-correct-corruption

самая страшная утилитка dbv

по результату чека смотреть в v$database_block_corruption

и прочекать DBMS_REPAIR

это на тот случай если нужно выдернуть хоть что-то....
...
Рейтинг: 0 / 0
Ora-01578
    #39564015
Тролин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabanasy,
ну если есть саппорт 1088018.1
...
Рейтинг: 0 / 0
Ora-01578
    #39564018
Тролин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kabanasy,
если есть LOB то там целая песня....
...
Рейтинг: 0 / 0
Ora-01578
    #39564020
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdmОбычно после восстановления из бэкапа не бывает коррумпированных блоков.

Они не поврежденные - медитируй над: Ora-26040 data block was loaded using the NOLOGGING option. Посему production желательно устанoвить c FORCE LOGGING.

SY.
...
Рейтинг: 0 / 0
Ora-01578
    #39564027
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
kabanasy,

LOBы придется обнулять: ORA-1578 ORA-26040 in a LOB segment - Script to solve the errors (Doc ID 293515.1)
...
Рейтинг: 0 / 0
Ora-01578
    #39564875
kabanasy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем. Решил вопрос! Если кому-то интересно, то делалось следующее.
Были почищены записи в таблице, которой принадлежали corrupted blocks, что давало надежду, что удастся ужать размер таблицы, но попытка не увенчалась успехом.
Затем создал точно такую же таблицу в другой базе и merge-ем перелили туда все данные. Удалил таблицу, содержащую corrupted blocks, но запрос v$database_block_corruption все равно выдал наличие corrupted blocks. ПБыло принято решение на удаление и пересоздание tablespace, после чего проблема решилась.
...
Рейтинг: 0 / 0
Ora-01578
    #39564944
avanyugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kabanasy,

Сталкивался с таким. Если битый блок не принадлежит никакому сегменту, а находится во free space, то его условно можно считать нормальным, так как при записи в него он "исправится". Чтобы не смущать себя наличием битого блока, можно принудительно заполнить его.
Создадим таблицу:

Код: plsql
1.
2.
create table dummy_tab (id number, str varchar2(4000))
nologging tablespace <<TBS>> pctfree 99;



"Помещаем" битый блок в таблицу. Расширяем сегмент в нужном файле, пока не захватим блок (проверяем через DBA_EXTENTS):
Код: plsql
1.
2.
3.
4.
5.
6.
alter table dummy_tab allocate extent
(datafile <<datafile_name>> size 1G);

SELECT * FROM DBA_EXTENTS
WHERE FILE_ID = <<FILE_ID#>>
 AND <<BLOCK#>> BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS – 1;



Как блок стал относиться к таблице - записываем в нее:
Код: plsql
1.
2.
3.
4.
5.
INSERT INTO dummy_tab VALUES (1,RPAD('*',4000,'*'));
-- удваиваем количество строк вставки
INSERT INTO dummy_tab SELECT * FROM dummy_tab;
-- Когда объем будет достаточно большой, можно просто вставлять определенное количество строк
INSERT INTO dummy_tab SELECT * FROM dummy_tab WHERE ROWNUM <= 1000000;



Когда размер сегмента достигнет размера аллоцированного пространства - можно думать, что блок записан.

RMAN> validate datafile FILE#;
...
Рейтинг: 0 / 0
Ora-01578
    #39565010
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avanyugin,

Код: plaintext
1.
This chapter explains how to use the DBMS_REPAIR PL/SQL package to repair data block corruption in database schema objects. It contains the following topics:

DBMS_REPAIR не помогает?

.....
stax
...
Рейтинг: 0 / 0
Ora-01578
    #39565017
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StaxDBMS_REPAIR не помогает?RTFM Recovering After the NOLOGGING Clause Is Specified (FAQ)
...
Рейтинг: 0 / 0
Ora-01578
    #39565024
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

таблицу удалили, блок свободен, зачем помнить о NOLOGGING и corrupt?

....
stax
...
Рейтинг: 0 / 0
Ora-01578
    #39565030
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта информация находится в самом блоке
При удалении таблицы никто его, естественно, не переформатирует
А та же DBV сканирует КАЖДЫЙ блок -- она не знает свободен он или используется
...
Рейтинг: 0 / 0
Ora-01578
    #39565040
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЭта информация находится в самом блоке
При удалении таблицы никто его, естественно, не переформатирует
А та же DBV сканирует КАЖДЫЙ блок -- она не знает свободен он или используется

я понимаю что инфа в блоке,
но проверить что он уже никому не нужен можно ж

или скажем что в блоке нет жодной записи, проверить можно ж запросто, и снять отметку

не вижу препятствий

......
stax
...
Рейтинг: 0 / 0
Ora-01578
    #39565043
avanyugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StaxDBMS_REPAIR не помогает?


Это было на Standard Edition
...
Рейтинг: 0 / 0
Ora-01578
    #39565275
kabanasy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avanyugin, дело в том, что corrupted blocks были не во free space, а в случае с LOB-сегментами там есть нюанс, что при удалении записей из таблицы, освобожденное пространство не уходит во free space, а остается принадлежать таблице ...
А DBMS_REPAIR вроде с LOB тоже не особо дружит(
...
Рейтинг: 0 / 0
Ora-01578
    #39565284
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
kabanasy,

ну после заNULLивания лоб-полей сделали бы мув таблицы с мувом самого лоба:
alter table bla move LOB(lobcol) store as (...)
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ora-01578
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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