Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить / 25 сообщений из 35, страница 1 из 2
16.08.2017, 01:08
    #39505995
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Всем доброго времени суток.

Собственно сам вопрос в заголовке темы.
Вот какие данные есть:
Код: plsql
1.
select * from v$database_block_corruption;


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
FILE#              BLOCK#             BLOCKS                           CORRUPTION_CHANGE#             CORRUPTIO       CON_ID
-------------------------------------- -------------------------------------- --------------------------------------------------- 
84                    	49422       	1                               	0                            ALL ZERO  	0
84	                49203  	        1                                	0                            ALL ZERO  	0
87	                1012613	        7                               	0                            ALL ZERO  	0
87	                1012726	        1                               	0                            ALL ZERO  	0
87	                1012669	        1                               	0                            ALL ZERO  	0
84	                49196  	        1                                	0                            FRACTURED	0
84	                49198  	        1                                 	0                            ALL ZERO  	0
84	                49200  	        2                                 	0                            ALL ZERO  	0
84	                49420  	        1                                	0                            FRACTURED	0



Эти блоки появились в результате выхода из строя одного диска в RAID10, во время подмены его на Hot Spare Disk. Соответсвенно резервная копия не сделалась (БД в режиме archivelog, копия холодная). Были пару ошибок, оторые указывали на плохие блоки в таблицах. Их починить получилось, благо есть копия, где все в порядке.
Но вот с этими блоками просто беда. Дело в том, что это LOBSEGMENT, принадлежность к таблицам я определил.
Так же с помощью RMAN выполнял следующую последовательность команд:
Код: plsql
1.
2.
3.
1. list failure;
2. advise failure;
3. blockrecover datafile ... block ...



В документации говориться, что это должно привести к починке блоков и как результат, возможность создания резервной копии.
Однако, если потом запускать validate по проблемным файлам количество блоков либо остается прежним, либо уменьшается, либо увеличивается. Для меня не совсем понятная ситуация. Причем при выполнении blockrecover каких либо ошибок на экран не выводится.

Посему прошу помощи Гуру Oracle в разрешении данного вопроса.
Прошу строго не судить, с такой ситуацией сталкиваюсь первый раз и делая по книжке нужного результата не получаю.
Заранее всем спасибо за помощь.
...
Рейтинг: 0 / 0
16.08.2017, 08:50
    #39506051
опс...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей ЛуневОднако, если потом запускать validate по проблемным файлам количество блоков либо остается прежним, либо уменьшается, либо увеличивается
Блоки другие потом в списке ?
...
Рейтинг: 0 / 0
16.08.2017, 08:59
    #39506053
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
опс...,

Если Вы имеете ввиду результат запроса
Код: plsql
1.
select * from v$database_block_corruption;

, то другие тоже попадают в список. Потом после проведения действий по восстановлению могут уйти, а могут остаться.
...
Рейтинг: 0 / 0
16.08.2017, 09:20
    #39506065
опс...
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
оперативка или raid-контроллер
...
Рейтинг: 0 / 0
16.08.2017, 09:26
    #39506071
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
опс...оперативка или raid-контроллер

Перед этим была замена сбойного диска в RAID10. После замены все это хозяйство проработало ровно 5-6 часов, а потом этот же диск вылетел снова. В тех поддержке рекомендовали вытащить RAID-контроллер, чтобы сбросить статус диска и вставить снова. Эквалайзинг и ребилд прошел нормально, но это опять помогло только на некоторое время.

Так что я тоже склоняюсь к тому, что это виноват сам массив дисковый. Нужна замена контроллера, скорее всего, но поддержка тянет с этим что-то.
...
Рейтинг: 0 / 0
16.08.2017, 14:29
    #39506352
Aliona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей Лунев Соответсвенно резервная копия не сделалась (БД в режиме archivelog, копия холодная).
Вы бэкап как делаете rman' ом ?
...
Рейтинг: 0 / 0
16.08.2017, 15:26
    #39506397
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Aliona,

Да, RMAN. резервная копия холодная. Пока время позволяет. Но планирую переходить на горячее резервирование. БД находится в режиме archivelog.
...
Рейтинг: 0 / 0
17.08.2017, 14:00
    #39506838
Aliona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
А вы уверены, что в бэкапе эти блоке "хорошие" ?
Возможно, что и там они corrupt.
...
Рейтинг: 0 / 0
17.08.2017, 14:50
    #39506898
Taciturn12
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
А при создании нового бэкапа он вопит о наличие сбойных блоков или проходит? У меня была ситуация когда после восстановления блоков информация о том, что они сбойные в представлении v$database_block_corruption осталась, хотя чтение данных из них проходило без проблем и новый бэкап выполнялся.
Есть возможность принудительно очистить это представление, но затем нужно обязательно либо провести валидацию файлов либо выполнить новый бэкап. Очистка блока в контрольнике отвечающего за хранение информации о сбойных блоков выполняется командой dbms_backup_restore.resetCfileSection(35);
Подробней про это можно прочитать например здесь
В данной ситуации этот способ может понадобиться уже после решения проблем с дисковой подсистемой. Ну и проверьте предположение из предыдущего сообщения о повреждении самого бэкпа.
...
Рейтинг: 0 / 0
17.08.2017, 15:14
    #39506923
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
AlionaА вы уверены, что в бэкапе эти блоке "хорошие" ?
Возможно, что и там они corrupt.

Backup нормальный, сбойных блоков нет. Было проверено путем разворачивания на тестовой схеме и проведения валидации БД.
...
Рейтинг: 0 / 0
17.08.2017, 15:15
    #39506926
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Taciturn12А при создании нового бэкапа он вопит о наличие сбойных блоков или проходит? У меня была ситуация когда после восстановления блоков информация о том, что они сбойные в представлении v$database_block_corruption осталась, хотя чтение данных из них проходило без проблем и новый бэкап выполнялся.
Есть возможность принудительно очистить это представление, но затем нужно обязательно либо провести валидацию файлов либо выполнить новый бэкап. Очистка блока в контрольнике отвечающего за хранение информации о сбойных блоков выполняется командой dbms_backup_restore.resetCfileSection(35);
Подробней про это можно прочитать например здесь
В данной ситуации этот способ может понадобиться уже после решения проблем с дисковой подсистемой. Ну и проверьте предположение из предыдущего сообщения о повреждении самого бэкпа.

Вся беда в том, что все в этих блоках располагаются LOBSEGMENT-ы. Как их забороть ума не приложу. Куда копать, не знаю.
...
Рейтинг: 0 / 0
17.08.2017, 15:16
    #39506928
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Товарищи, подскажите как лечить эти сегменты и, если их нельзя вылечить, то как удалить?
...
Рейтинг: 0 / 0
17.08.2017, 15:17
    #39506930
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей Лунев,

Восстановление из бакапа и накат логов до текущего состояния - не предлагать?
...
Рейтинг: 0 / 0
17.08.2017, 15:23
    #39506938
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
env,

Думаю что нет, потому что времени прошло уже предостаточно. Простой будет большим.
...
Рейтинг: 0 / 0
17.08.2017, 15:28
    #39506945
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
При таком запросе:
Код: 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.
27.
28.
29.
30.
31.
32.
33.
34.
set lines 200 pages 10000
col segment_name format a30

SELECT e.owner, e.segment_type, e.segment_name, e.partition_name, c.file#
, greatest(e.block_id, c.block#) corr_start_block#
, least(e.block_id+e.blocks-1, c.block#+c.blocks-1) corr_end_block#
, least(e.block_id+e.blocks-1, c.block#+c.blocks-1)
- greatest(e.block_id, c.block#) + 1 blocks_corrupted
, null description
FROM dba_extents e, v$database_block_corruption c
WHERE e.file_id = c.file#
AND e.block_id <= c.block# + c.blocks - 1
AND e.block_id + e.blocks - 1 >= c.block#
UNION
SELECT s.owner, s.segment_type, s.segment_name, s.partition_name, c.file#
, header_block corr_start_block#
, header_block corr_end_block#
, 1 blocks_corrupted
, 'Segment Header' description
FROM dba_segments s, v$database_block_corruption c
WHERE s.header_file = c.file#
AND s.header_block between c.block# and c.block# + c.blocks - 1
UNION
SELECT null owner, null segment_type, null segment_name, null partition_name, c.file#
, greatest(f.block_id, c.block#) corr_start_block#
, least(f.block_id+f.blocks-1, c.block#+c.blocks-1) corr_end_block#
, least(f.block_id+f.blocks-1, c.block#+c.blocks-1)
- greatest(f.block_id, c.block#) + 1 blocks_corrupted
, 'Free Block' description
FROM dba_free_space f, v$database_block_corruption c
WHERE f.file_id = c.file#
AND f.block_id <= c.block# + c.blocks - 1
AND f.block_id + f.blocks - 1 >= c.block#
ORDER BY file#, corr_start_block#;



Результат такой:
OWNER SEGMENT_TYPE SEGMENT_NAME PARTITION_NAME FILE# CORR_START_BLOCK# CORR_END_BLOCK# BLOCKS_CORRUPTED DESCRIPTION
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012613 1012619 7
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012620 1012620 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012669 1012670 2
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012672 1012675 4
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012676 1012676 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012726 1012726 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012728 1012731 4
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012732 1012732 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012780 1012780 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012781 1012787 7
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012788 1012788 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012836 1012836 1
USER LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012837 1012843 7
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012844 1012844 1
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012892 1012892 1
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012893 1012899 7
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012900 1012900 1
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1012956 1012956 1
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1013004 1013004 1
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1013005 1013011 7
IBS LOBSEGMENT SYS_LOB0000225532C00005$$ 87 1013012 1013012 1
...
Рейтинг: 0 / 0
17.08.2017, 15:39
    #39506955
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Код: plsql
1.
2.
3.
4.
SELECT * 
          FROM dba_lobs 
         WHERE owner='IBS'
           AND segment_name='SYS_LOB0000225532C00005$$';



Вот такой результат:
OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME TABLESPACE_NAME INDEX_NAME CHUNK
--------------------------------------------------------------------------------------------------------------------------------------------------------
IBS Z#BC_ATTACH_FILE C_FILE_DATA SYS_LOB0000225532C00005$$ T_USR SYS_IL0000225532C00005$$ 8192

Как узнать номер записи? Может ее просто удалить и все?
...
Рейтинг: 0 / 0
18.08.2017, 09:43
    #39507301
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей Лунев,

сюда не смотрел?
...
Рейтинг: 0 / 0
18.08.2017, 10:41
    #39507348
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
trace.logАндрей Лунев,

сюда не смотрел?

Смотрел. Процедура:
Код: 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.
set serverout on
		exec dbms_output.enable(100000);
		declare
		 error_1578 exception;
		 pragma exception_init(error_1578,-1578);
		 n number;
		 cnt number:=0;
		 badcnt number:=0;
		begin
		  for cursor_lob in
		        (select rowid r, [color=red]MY_COLUMN [/color]L from [color=red]MY_TABLE[/color])
		  loop
		    begin
		      n:=dbms_lob.instr(cursor_lob.L,hextoraw('AA25889911'),1,999999) ;
		    exception
		     when error_1578 then
		       dbms_output.put_line('Got ORA-1578 reading LOB at '||cursor_lob.R);
		       badcnt:=badcnt+1;
		    end;
		    cnt:=cnt+1;

		  end loop;
		  dbms_output.put_line('Scanned '||cnt||' rows - saw '||badcnt||' errors');
		end;
		/


Возвращает пустое значение, т.е. не могу определить ROWID.
Для меня непонятна эта строка
Код: plsql
1.
dbms_lob.instr(cursor_lob.L,hextoraw('AA25889911'),1,999999) ;

, а именно вот эта часть hextoraw('AA25889911').
И еще читал, что hextoraw может некорректно отрабатывать, можно использовать utl_raw.cast_to_varchar2('AA25889911').
Пока мысли кончились на этом. Были проблемы с плохими блоками, но ROWID определялось без особых трудностей.
И еще такой вопрос, если ROWID определить, то удалить записи ORACLE даст вне зависимости плохой блок или нет. До этого случая просто не приходилось этого делать.
...
Рейтинг: 0 / 0
18.08.2017, 11:23
    #39507391
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей Лунев,

а версия какая?
...
Рейтинг: 0 / 0
18.08.2017, 11:47
    #39507404
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
trace.log,

12.1.0.2.0
...
Рейтинг: 0 / 0
18.08.2017, 13:51
    #39507533
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей Лунев,
а такой вариант:

Код: sql
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.
declare
error_1578 exception;
error_1555 exception;
error_22922 exception;
pragma exception_init(error_1578,-1578);
pragma exception_init(error_1555,-1555);
pragma exception_init(error_22922,-22922);
num number;
begin
for cursor_lob in (select rowid r, &&lob_column from &table_owner..&table_with_lob) loop
begin
num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ('889911')) ;
exception
when error_1578 then
insert into corrupt_lobs values (cursor_lob.r, 1578);
commit;
when error_1555 then
insert into corrupt_lobs values (cursor_lob.r, 1555);
commit;
when error_22922 then
insert into corrupt_lobs values (cursor_lob.r, 22922);
commit;
end;
end loop;
end;
/


...
Рейтинг: 0 / 0
18.08.2017, 14:17
    #39507550
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
trace.log,

Я это тоже нашел, сейчас отрабатывает.
...
Рейтинг: 0 / 0
18.08.2017, 14:48
    #39507563
trace.log
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей Луневtrace.log,

Я это тоже нашел, сейчас отрабатывает.

отпишитесь по результату, интересно.
...
Рейтинг: 0 / 0
21.08.2017, 10:41
    #39508291
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Еще, такой вопрос, глупый правда, но тем не менее. RMAN очень долго восстанавливает блоки. Сессия подвисает, в чем может быть проблема?
...
Рейтинг: 0 / 0
21.08.2017, 13:29
    #39508376
Aliona
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить
Андрей ЛуневЕще, такой вопрос, глупый правда, но тем не менее. RMAN очень долго восстанавливает блоки. Сессия подвисает, в чем может быть проблема?
Rman должен все бэкапы перечитать, это долго, если бэкапов много.
Сессия подвисает - это как?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Corruption blocks со статусом ALL ZERO, FRACTURED. Как исправить / 25 сообщений из 35, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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