Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Пометить блок.  [new]
mayton
Member

Откуда: loopback
Сообщений: 49739
Помогите решить проблему.

SQL> insert into bslinkab@arc2 select * from bslinkab where nbsper_id=922;
insert into bslinkab@arc2 select * from bslinkab where nbsper_id=922
*
ERROR at line 1:
ORA-02055: distributed update operation failed; rollback required
ORA-02068: following severe error from ARC2
ORA-00603: ORACLE server session terminated by fatal error
ORA-01578: ORACLE data block corrupted (file # 20, block # 490646)
ORA-01110: data file 20: '/db03/arc/idx03.dbf'
ORA-01578: ORACLE data block corrupted (file # 20, block # 490646)
ORA-01110: data file 20: '/db03/arc/idx03.dbf'

Восстанавливать блок я не хочу. Хочу прибить индекс и построить заново. Но как мне сказать этому блоку, чтобы он не использовался? Те. как пометить его меткой 'BAD' ?

Спасибо.
29 окт 06, 20:27    [3326672]     Ответить | Цитировать Сообщить модератору
 Re: Пометить блок.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Если ты хочешь перестроить индекс, а при перестроении берется старый в качестве источника, достаточно сделать старый UNUSABLE
30 окт 06, 04:37    [3327218]     Ответить | Цитировать Сообщить модератору
 Re: Пометить блок.  [new]
mayton
Member

Откуда: loopback
Сообщений: 49739
2 Вячеслав

Смотрел, что повредилось. Оказалось - одна секция индекса. Это радует.

В базе arc2 (новый сервер):

SQL> select * from dba_extents where file_id=20 and block_id<=490646 and 490646<block_id+blocks;

OWNER SEGMENT_NAME             PARTITION_NAME   SEGMENT_TYPE      TABLESPACE_NAME EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS         RELATIVE_FNO
------------------------------ --------------------------------------------------------------------------------- ------------------------------ ------------
ARC   FK_BSLINKAB_VCODEA       NBSPER_920_923   INDEX PARTITION   IDX             82           20        489737    8388608       1024           20


SQL> select * from dba_segments where owner='ARC' and segment_name='FK_BSLINKAB_VCODEA' and partition_name='NBSPER_920_923';

OWNER SEGMENT_NAME        PARTITION_NAME SEGMENT_TYPE    TABLESPACE_NAME HEADER_FILE HEADER_BLOCK BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE  FREELISTS FREELIST_GROUPS RELATIVE_FNO BUFFER_POOL
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ARC   FK_BSLINKAB_VCODEA  NBSPER_920_923 INDEX PARTITION IDX             19          24716        293601280      35840         91     52428800              1 2147483645                                                    19 DEFAULT


SQL> alter index arc.fk_bslinkab_vcodea modify partition nbsper_920_923 unusable;

Index altered.


В базе arc (старый сервер).
SQL> set timing on
SQL>
SQL> spool c:\arc_old.log
SQL>
SQL> insert into bslinkab@arc2 select * from bslinkab where nbsper_id=922;
............транзакция идет в данный момент.......

Фуххх. Кажется пошло.

Но мне все равно придется перестроить эту секцию! Я не могу бросить 300Мб в никуда. Да и свободного места сейчас не хватает!

P.S. Запарился spool форматировать... :)
30 окт 06, 21:51    [3332470]     Ответить | Цитировать Сообщить модератору
 Re: Пометить блок.  [new]
mayton
Member

Откуда: loopback
Сообщений: 49739
База arc:
SQL> insert into bslinkab@arc2 select * from bslinkab where nbsper_id=922;

8242191 rows created.

Elapsed: 03:43:03.40

Ух. Прошло. Щас опущу базу arc2 и прогоню через dbv.

Вдруг диск посыплася?
31 окт 06, 01:51    [3332877]     Ответить | Цитировать Сообщить модератору
 Re: Пометить блок.  [new]
mayton
Member

Откуда: loopback
Сообщений: 49739
SQL> alter index arc.fk_bslinkab_vcodea rebuild partition nbsper_920_923;

Index altered.

Почекал все датафайлы. Никаких corrupted нету.

Хм... что-же это за ошибка была?
31 окт 06, 08:33    [3333098]     Ответить | Цитировать Сообщить модератору
 Re: Пометить блок.  [new]
Alex from SPb
Member

Откуда:
Сообщений: 448
mayton
Помогите решить проблему

не могли бы сказать мне, не ради любопытства - были аналогичные проблемы
- не создавалась ли эта база из standbyDB
- какая версия oracle
- если >9.0, включен force logging
31 окт 06, 08:44    [3333114]     Ответить | Цитировать Сообщить модератору
 Re: Пометить блок.  [new]
mayton
Member

Откуда: loopback
Сообщений: 49739
Alex from SPb
mayton
Помогите решить проблему

не могли бы сказать мне, не ради любопытства - были аналогичные проблемы
- не создавалась ли эта база из standbyDB
- какая версия oracle
- если >9.0, включен force logging


1) База создавалась через imp.
2) Oracle10gR2
3) NOLOGGING

По сабжу.

Я - новичек в Oracle. Но насколько я разбираюсь, в любых блочных файловых системах и БД всегда должна быть предусмотрена возможность маркировать блок (не сегмент) меткой BAD. В данном случае, у меня физически не было возможности переместить датафайл в другое место. Диска не хватало.

По совету Вячеслава я перестроил секцию индекса. Вроде ошибка ушла. Следовательно мой диск был неповрежденный! Тогда откуда ошибка? Логическая?

Еще один момент, который меня смущал - это включенные опции

DB_BLOCK_CHECKING=full
DB_BLOCK_CHECKSUM=typical

В этой базе я их использую впервые. Поэтому первая мысль, которая у меня шевельнулась в голове - проблема контрольных сумм. С другой стороны, ошибка ORA-01578 никоим образом про это не упоминает.

Т.е причину ошибки я так и не выяснил.
1 ноя 06, 16:35    [3342734]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить