|
|
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Alibek B.Допустим у меня есть таблица tmp2, которая гарантированно размещается на поврежденных блоках. По идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 15:42 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
То есть в таблице нужно отключить авторасширение и вставлять строки в цикле, пока таблица не переполнится? Выделенный размер таблицы сейчас 3,5ГБ, таблица состоит из одного number-поля. Мне нужно будет под миллиард строк вставить, это само по себе может стать проблемой. А нельзя ли создать новый data-файл, а старый удалить? Или это большая нагрузка на сервер будет? Размер data-файла 32 ГБ, число блоков 4 миллиарда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 15:51 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Alibek B.То есть в таблице нужно отключить авторасширение и вставлять строки в цикле, пока таблица не переполнится? Выделенный размер таблицы сейчас 3,5ГБ, таблица состоит из одного number-поля. Мне нужно будет под миллиард строк вставить, это само по себе может стать проблемой. А нельзя ли создать новый data-файл, а старый удалить? Или это большая нагрузка на сервер будет? Размер data-файла 32 ГБ, число блоков 4 миллиарда. Как я понимаю вы уже выделили нужный экстент с корумпированным блоком для таблицы. Далее просто заполняйте ее, можно из нее самой же, пока нужный блок не починится. В идеале, при создании такой таблицы (для починки блоков) выставить PCTFREE 99 - тогда вставка данных до нужного блока пройдет быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 15:57 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
alwanAlibek B.Допустим у меня есть таблица tmp2, которая гарантированно размещается на поврежденных блоках. По идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись.Блок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:04 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровБлок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно Но утилита dbv находит ошибки в файле данных, хотя найденные блоки уже принадлежат таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:10 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Alibek B.Вячеслав ЛюбомудровБлок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно Но утилита dbv находит ошибки в файле данных, хотя найденные блоки уже принадлежат таблице.По приведенному тобой вывводу DBV там никаких ошибок нет А то, что они остались в V$DATABASE_BLOCK_CORRUPTION, так я тебе сказал как ее почистить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:12 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Как же нет? Код: 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. И мне непонятно, как исправить такие блоки. Если запустить бэкап через rman, то без выставленного maxcorrupt он завершится с ошибкой, а с выставленным параметром он заполняет V$DATABASE_BLOCK_CORRUPTION данными, совпадающими с результатом dbv. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:30 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудровalwanпропущено... По идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись.Блок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно Я сталкивался с исправлением блоков вручную (Standard Edition). Если блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные. Просто аллоцирование не исправляло блок. В этом блоге, например, рекомендуется такой же метод: https://blog.rackspace.com/clearing-unused-corrupt-nologging-blocks Если можете дать ссылку на доку или ноту, где говорится, что блок "чинится" при аллоцировании - было бы интересно почитать, так как практика пока говорит обратное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:31 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Сейчас я сделал таблицу TMP2 и расширял ее, пока в нее не попали сбойные блоки (во-первых чтобы эти блоки были сопоставлены с объектом, а во-вторых чтобы они часом не сопоставились с какими-нибудь рабочими объектами). Теперь я хочу как-нибудь эти ошибки исправить, но не получается. analyze table ошибок не находит. DBMS_REPAIR.CHECK_OBJECT ошибок не находит (возвращает CORRUPT_COUNT=0). dbv ошибки находит, но не исправляет. rman наверное смог бы найти и исправить, но я опасаюсь использовать этот инструмент без подробной инструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:37 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
alwanЕсли блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные А нет ли возможности указать, в какой блок нужно вставлять данные? А то меня беспокоит перспектива вставлять миллиард строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:41 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
alwanПо идее, чтобы "исправить" блок, его не достаточно просто аллоцировать, в него нужно произвести запись. Похоже на то. Когда таблица TMP2 была пустая (хоть и занимала 3,5ГБ), DBMS_REPAIR.CHECK_OBJECT отрабатывал моментально, но не находил ошибок. Сейчас я вставил в таблицу 10кк записей и снова запустил DBMS_REPAIR.CHECK_OBJECT — хоть ошибок по прежнему не нашлось, но процедура работала какое-то время. То есть эта процедура явно проверяет не все аллоцированное пространство, а только занятое. Теперь нужно придумать, как бы заполнить эту таблицу данными и при этом не положить сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:48 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Alibek B.А то меня беспокоит перспектива вставлять миллиард строк. Ну сделайте таблицу с широкой строкой... Скажем, 3-4 поля char(2000). Дальше сгенерить несколько строк и "insert into myTab select * from myTab" до победы (удваивая число строк на каждой операции). При 8К блоке будет одна строчка на блок :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:49 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
alwanВячеслав Любомудровпропущено... Блок при "аллоцировании" переформатируется в чистое состояние, ничего вставлять в него больше не нужно Я сталкивался с исправлением блоков вручную (Standard Edition). Если блок не принадлежит никакому сегменту, то чтобы его починить необходимо сначала аллоцировать его под табличку, а потом вставить в него данные. Просто аллоцирование не исправляло блок. В этом блоге, например, рекомендуется такой же метод: https://blog.rackspace.com/clearing-unused-corrupt-nologging-blocks Если можете дать ссылку на доку или ноту, где говорится, что блок "чинится" при аллоцировании - было бы интересно почитать, так как практика пока говорит обратноеДа, я ошибся Надо действительно вставлять 2Alibek B. Сделай PCTFREE 99 и поле char(100) -- как раз по одной строке в блок войдет Только не забудь авторасширение файла запретить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 16:57 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 17:00 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 17:04 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Заполнил файл данными (по этому совету 21531798 ), запустил CHECK_OBJECT — ошибок не найдено. Запустил dbv на файле данных, в котором находились поврежденные блоки — ошибок не найдено. Ошибки были логические и при пересоздании блоков (в процессе сохранения данных) были автоматически исправлены? Или я что-то не то сделал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 21:36 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Возвращение к истокам. Когда случилась описанная проблема с жестким диском в RAID, я решил сразу заказать диски на замену и постепенно заменить их все в массиве. Но данная модель дисков уже не производится, поэтому нашел фирму-поставщика не сразу. Потом поставщик прислал не те диски. Потом прислал те диски, но б/у (восстановленные, хоть и на заводе, с надписью "certified repaired hdd"). Затем очень долго высылал замену, но все же вчера посылка с дисками наконец приехала. А сегодня утром в массиве RAID-5 вылетел еще один диск. Диск я уже заменил, сейчас он перестраивается. Диагностические процедуры из топика я выполнял, вроде бы ошибок нет ни в логах, ни в результатах dbv. Пронесло? Или целостность БД можно проверить как-то еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2018, 09:50 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39667681&tid=1883263]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
153ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 470ms |

| 0 / 0 |
