Início > Oracle > Corrupção de index no dicionário do Oracle

Corrupção de index no dicionário do Oracle

Bom dia galera

Hoje pela madrugada em um cliente que cuidamos ocorreu o seguinte erro no alert do banco de dados:

Sat Oct 22 00:15:14 2011
Errors in file d:\ora\u01\oradata\admin\orcl\bdump\orcl_smon_2324.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-01578: ORACLE data block corrupted (file # 1, block # 4565)
ORA-01110: data file 1: ‘D:\ORA\U01\ORADATA\ORCL\DATA\SYSTEM01.DBF’

O banco de dados estava ativo, e não chegou a cair, após a execução do DBV, foi validada a corrupção, segue:

DBVERIFY – Verification starting : FILE = D:\ORA\U01\ORADATA\ORCL\DATA\SYSTEM01.DBF
Page 4565 is influx – most likely media corrupt
Corrupt block relative dba: 0x004011d5 (file 1, block 4565)
Fractured block found during dbv:
Data in bad block:
type: 6 format: 2 rdba: 0x004011d5
last change scn: 0x002c.2470887a seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x0
consistency value in tail: 0x7f650601
check value in block header: 0x60b2
computed block checksum: 0x1e42
DBVERIFY – Verification complete

Total Pages Examined         : 65280
Total Pages Processed (Data) : 39501
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 7811
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 1650
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 16317
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 1
Highest block SCN            : 757453299 (44.757453299)

Verificado que o segmento é um segmento de Index que tinha corrompido no dicionário, segue:

select * from dba_extents where file_id = [FileNumber]

and [block_num] between block_id and block_id + blocks – 1;

OWNER                          SEGMENT_NAME
—————————— ———————————–

PARTITION_NAME                 SEGMENT_TYPE       TABLESPACE_NAME
—————————— —————— —————–

EXTENT_ID    FILE_ID   BLOCK_ID      BYTES     BLOCKS RELATIVE_FNO
———- ———- ———- ———- ———- ————
SYS                            SMON_SCN_TIME_TIM_IDX
INDEX              SYSTEM
0          1       4561      65536          8            1

Verificado que para dropar uma unique constraint, segue:

ALTER TABLE table_name drop CONSTRAINT constraint_name;

Porém o ambiente era um Oracle Standard(10.2.0.1.0) neste caso não possui a feature rebuild online e o rebuild normal ocorria erro que o bloco estava corrompido, neste caso foi colocado o index como UNUSABLE e feito o REBUILD com sucesso, segue:

SQL> ALTER INDEX SMON_SCN_TIME_TIM_IDX UNUSABLE;

Index altered.

SQL> ALTER INDEX SMON_SCN_TIME_TIM_IDX REBUILD;

Index altered.

SQL> analyze index SMON_SCN_TIME_TIM_IDX validate structure;

Index analyzed.

Realizado o analyse do index com sucesso =D. Porém encontrados novas corrupções de dados =(  na tabela de estoque em uma tabela da sysaux no ambiente e foi adotado e realizado o restore do ambiente, porém o unico problema é que corrompeu fazia 2 dias devido o banco ter caido por causa do SO(Windows) que houve queda de energia na localidade, ou seja subiram o banco e não viram a corrupção no dia, que beleza, aiii não hein…

Abraço

Categorias:Oracle
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: