|
Навигация
|
Главная » Новости Как избавиться от ORA-01410, вычленив неповрежденные данныеИсточник: habrahabr Brass_nn Одно время серьезно набил руку вот на какой задаче - по ряду таблиц в результате компрессии и ораклового бага побились несколько строк. В результате чего пользователи при фулскане по таким таблиц получали ORA-01410.Рассмотрим самый тяжелый случай - когда нет ни бэкапов, ни индексов (в этом случае проиндексированные колонки можно получить при сканировании по индексу). В данном случае единственный вариант - найти проблемный ROWID и "обогнуть" его с двух сторон, вычленив неповрежденные данные. Для начала снимем трейс по проблемному запросу, для того чтобы получить исходные данные: и запускаем проблемный запрос
Находим в трейсе запись вроде этой: По полученному значению получаем Block_number и Relative_fno: Дополнительно находим data_object_id проблемного объекта: По полученным значениям формируем ROWID:
Ну и, собственно, то, о чем я упоминал вначале - огибаем проблемную строку со всех сторон: Хотелось бы отметить, что подобных проблем, скорее всего, удалось бы избежать, имея выставленные параметры БД db_block_checking/db_block_checksum = 'Full' или db_ultra_safe = 'data_and_index', что несколько нагрузило бы процессор (~5%, хотя это обсуждаемо), но дало бы дополнительную надежность. CA Unicenter как основа оптимизации работы ИТ-инфраструктуры предприятия. Сравнение версий Crystal Enterprise. Компьютер и сердце. Cisco выпускает новый экзамен CCDA. Web-сайт компании как инструмент подбора персонала. Главная » Новости |
© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено. |