|
|
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Приветствую, товарищи! В последнее время в приложении стали пропадать очень важные данные. Суть в том, что в логах приложения появилась ошибка: авторORA-01578: ORACLE data block corrupted (file # 5, block # 2530356) ORA-01110: data file 5: 'C:\ORADATA\DB\TKDRM\USERS01.DBF' Попробовал в РМАНе выполнить восстановление, но похоже у нас не полная версия Оракла... авторMicrosoft Windows [Версия 5.2.3790] (С) Корпорация Майкрософт, 1985-2003. C:\Documents and Settings\Администратор>rman Recovery Manager: Release 10.2.0.4.0 - Production on Tue May 15 13:18:26 2012 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN> blockrecover datafile 5 BLOCK 2530356; Starting blockrecover at 15.05.12 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of blockrecover command at 05/15/2012 13:20:35 RMAN-05009: Block Media Recovery requires Enterprise Edition Подскажите пожалуйста, как исправить проблему? Oracle 10.2 Windows 2003 R2 x32 Log mode - Archivelog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:16 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Я не особо сильно разбираюсь в БД, подскажите пожалуйста на языке чайника... На сколько я представляю, возникло после сбоев с оперативой или ЖД. Помогут ли переносы "больной" таблицы в другое табличное пространство или удаление этой таблицы совсем (этот вариант ужасен) Просто дальнейшая работа приложения в таком виде неприемлема и через пару дней меня подвесят за одно место... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:19 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. NagirНа сколько я представляю, возникло после сбоев с оперативой или ЖД. не обязательно. NagirПомогут ли переносы "больной" таблицы в другое табличное пространство или удаление этой таблицы совсем (этот вариант ужасен) Запрос выше подскажет вам, что это за объект. Если таблица, то вы ее не перенесете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:21 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
pravednik Код: plsql 1. 2. 3. 4. 5. Segment_Type - Table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:35 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
NagirSegment_Type - Table Бекапы есть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:36 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Какие есть варианты по устранению проблемы? В принципе, данный блок маловажный. Можно ли как то его удалить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:37 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Nagir, если есть бэкапы логично Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:40 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
NagirВ принципе, данный блок маловажный. Вы уже в курсе, что в нем лежит ? ;) NagirМожно ли как то его удалить? Можно пометить его "нечитаемым" - DBMS_REPAIR.... Можно вытащить все строки кроме тех, которые в блоке - dbms_rowid Можно восстановить БД(не всю), вытащить от туда таблицу и заменить ей покореженную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:43 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
kinky catNagir, если есть бэкапы логично Код: plsql 1. 2. Получится, что надо будет применить тот бэкап, который был до крэша этого блока, а всё что было занесено в таблицу после данного бэкапа пропадет? Ведь, если применить бэкап, например сделанный 5минут назад, то битый блок снова будет присутствовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 14:53 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
pravednikNagirВ принципе, данный блок маловажный. Вы уже в курсе, что в нем лежит ? ;) Ну, я в курсе, какие данные хранятся в этой таблице и предполагаю, что потеря одного блока будет не слишком болезненна. pravednikNagirМожно ли как то его удалить? Можно пометить его "нечитаемым" - DBMS_REPAIR.... Можно вытащить все строки кроме тех, которые в блоке - dbms_rowid Можно восстановить БД(не всю), вытащить от туда таблицу и заменить ей покореженную. Можете, пожалуйста, поподробнее написать про первый вариант Два следующих варианта, думаю будут намного дольше и сложнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 15:00 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Nagirkinky catNagir, если есть бэкапы логично Код: plsql 1. 2. Получится, что надо будет применить тот бэкап, который был до крэша этого блока, а всё что было занесено в таблицу после данного бэкапа пропадет? для этого есть как раз и делается recover. NagirВедь, если применить бэкап, например сделанный 5минут назад, то битый блок снова будет присутствовать? Именно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 15:09 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
pravednikNagirМожно ли как то его удалить? Можно пометить его "нечитаемым" - DBMS_REPAIR.... Я еще не знаком на практике с этой функцией. На сколько я представляю, там есть 2 варианта: DBMS_REPAIR.FIX_CORRUPT_BLOCK и DBMS_REPAIR.SKIP_CORRUPT_BLOCK Но я опасаюсь, не затронет ли эту всю таблицу в целом? Какие будут последствия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 15:18 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
NagirНа сколько я представляю, там есть 2 варианта: DBMS_REPAIR.FIX_CORRUPT_BLOCK и DBMS_REPAIR.SKIP_CORRUPT_BLOCK Но я опасаюсь, не затронет ли эту всю таблицу в целом? Какие будут последствия? У вас проблемы с чтением официальной документации ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 15:20 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
kinky catNagir, если есть бэкапы логично Код: plsql 1. 2. не логично:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 15:30 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
pravednikNagirНа сколько я представляю, там есть 2 варианта: DBMS_REPAIR.FIX_CORRUPT_BLOCK и DBMS_REPAIR.SKIP_CORRUPT_BLOCK Но я опасаюсь, не затронет ли эту всю таблицу в целом? Какие будут последствия? У вас проблемы с чтением официальной документации ? У меня проблемы со временем. Просто проблема очень срочная и я рассчитывал, что быстрее будет спросить у гуру баз данных, чем мне самому разбираться. В любом случае, спасибо огромное! Вы действительно очень сильно помогли! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 16:09 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
tim_scn, пожалуй согласен, погорячился у меня намедни такая трабла была систем. С обычным таблспейсом врядли стоит ресторить, ну по крайней мере, не в 1ую очередь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 16:10 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
pravednik, Выполнил авторBEGIN DBMS_REPAIR.SKIP_CORRUPT_BLOCKS ( SCHEMA_NAME => 'имя_схемы', OBJECT_NAME => 'имя_таблицы', OBJECT_TYPE => dbms_repair.table_object, FLAGS => dbms_repair.skip_flag); END; Всё успешно. Больше битый блок не мешает. Еще раз огромное спасибо! До новых встреч! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2012, 16:32 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
NagirВсё успешно. Больше битый блок не мешает. т.е. данные вас в бд совсем не интересуют, лишь бы ошибок не было ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2012, 09:21 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Доброго время суток! Анналогичная проблема. Применял FIX_CORRUPT_BLOCK, не помогло. Если я правильно понимаю единственная надежда на бекапы!? Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2012, 16:20 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
Как оказалось бекапа нет. Подскажите пожалуйста, есть еще какой нибудь способ востановить битые блоки? спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2012, 12:28 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
zerof84Анналогичная проблема.Давай сначала - может быть она тебе только кажется аналогичной. В каком объекте битый блок? Как применял dbms_repair? Что значит "не помогло"? Что ещё из вышеприведенного пробовал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2012, 12:30 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
проходил мимо..., спасибо что откликнулся! В этих битых блоках расположено 119 записей. Схема не системная. Первым делом я попробовал исправить битые блоки с помощю - FIX_CORRUPT_BLOCKS SQL> SET SERVEROUTPUT ON; SQL> DECLARE num_fix INT; 2 BEGIN num_fix := 0; 3 DBMS_REPAIR.FIX_CORRUPT_BLOCKS ( SCHEMA_NAME => 'NAME', 4 OBJECT_NAME=> 'STATUSLOG', 5 OBJECT_TYPE => dbms_repair.table_object, 6 REPAIR_TABLE_NAME => 'REPAIR_TABLE', 7 FIX_COUNT=> num_fix); 8 DBMS_OUTPUT.PUT_LINE('num fix: ' || TO_CHAR(num_fix)); 9 END; 10 / num fix: 0 PL/SQL procedure successfully completed. SQL> ========================================================== После чего я применил: BEGIN DBMS_REPAIR.SKIP_CORRUPT_BLOCKS ( SCHEMA_NAME => 'LEXWEB', OBJECT_NAME => 'STATUSLOG', OBJECT_TYPE => dbms_repair.table_object, FLAGS => dbms_repair.skip_flag); END; / в итоге я потерял 119 записей, которые лежали в 3 битых блоках. Собственно больше ничего и не пробовал. Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2012, 12:52 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
zerof84, 1. Как нашёл 119 битых "записей", что это означает? 2. Как сделали repair_table? 3. Что в ней содержалось? 4. И последнее - если уж сделал skip, что теперь не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2012, 13:08 |
|
||
|
ORA-01578: ORACLE data block corrupted
|
|||
|---|---|---|---|
|
#18+
проходил мимо..., 1. Как нашёл 119 битых "записей", что это означает? Было зафиксировано что в таблице перед тем как появились битые блоки было определенное количество записей. После того как применил SKIP_CORRUPT_BLOCKS их стало на 119 записей меньше. 2. Как сделали repair_table? Этой информации у меня нет. Но я думаю что было использовано DBMS_REPAIR.ADMIN_TABLES. А что тут могут быть какие то нюансы? 3. Что в ней содержалось? этого я тоже не знаю. 4. И последнее - если уж сделал skip, что теперь не устраивает? Эта таблица с битыми блоками является аудит таблицей. Данные не очень важные но клиент требует востановить их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2012, 14:11 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=37795166&tid=1883263]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 443ms |

| 0 / 0 |
