Come identificare corrompe blocchi nel database Oracle e correggerlo

Ci sono due tipi di corruzione.

a. Corruzione fisica: ciò accade generalmente a causa della corruzione dei media. In questo caso, il blocco non è valido checksum.it maggio contiene zero. Questo è generalmente il risultato di problemi di infrastruttura come media ,rete, memoria.

RMAN block recover può essere utilizzato per rimuovere la corruzione fisica

Vediamo l’errore ORA-01578: Blocco dati ORACLE danneggiato nel registro avvisi quando Oracle rileva la corruzione fisica. Oracle rileva la corruzione controllando l’intestazione del blocco e il piè di pagina del blocco.

b. Corruzione logica: ciò accade quando oracle trova l’intestazione e il piè di pagina del blocco buoni ma trova coerenza interna nel blocco. Generalmente accade a causa di alcuni bug nel software Oracle. Quando Oracle lo rileva, genera l’errore nel registro degli avvisi.

ORA – 08103-Questo errore è un errore di corruzione logica per un particolare blocco di dati.
ORA – 00600-Questo errore è correlato alla corruzione del blocco e si verifica a causa di un SCN superiore a quello del database SCN.

Come controllare il danneggiamento del database

il danneggiamento del Database si possono trovare utilizzando il seguente metodo

un. RMAN

c. Controllo registro degli avvisi per la possibile comparsa

c. dbverify

d. Esportazione

e. Analizzare comando

RMAN

Eseguire il seguente comando

RMAN> backup validate check logical database;

“CONTROLLO LOGICO” opzione viene utilizzata per identificare, Fisico e Logico, Blocco Corruzioni.

Possiamo usare sotto comando nel caso in cui vogliamo fare il controllo selettivamente

BACKUP VALIDATE DATAFILE 1;BACKUP VALIDATE check logical DATAFILE 1;BACKUP VALIDATE TABLESPACE TOOLS;BACKUP VALIDATE check logical TABLESPACE TOOLS;BACKUP VALIDATE BACKUPSET 1;BACKUP VALIDATE CURRENT CONTROLFILE;

Selezionare la vista per identificare i blocchi danneggiati rilevati da RMAN.

SQL> select * from v$database_block_corruption;For each row, find the segment impactedSQL> SELECT TABLESPACE_NAME, SEGMENT_NAME, PARTITION_NAME, SEGMENT_TYPE FROM DBA_EXTENTS WHERE FILE_ID=&FILE_ID AND &BLOCK_ID BETWEEN BLOCK_ID AND BLOCK_ID + BLOCKS - 1; 

Dopo la riparazione di un blocco danneggiato, la riga che identifica il blocco viene eliminata dalla vista.

Controllo del registro degli avvisi per la possibile occorrenza

Verifica avviso. file di registro per i blocchi danneggiati, elenco di file di dati.

For ex:- ORA-01578: ORACLE data block corrupted (file # 11, block # 45)ORA-01110: data file 5: '/xyz/db01.dbf'

dbverify

È inoltre possibile utilizzare l’utilità dbverify per identificare le corruzioni fisiche e logiche intra blocco.

dbv file=datafile_name blocksize=datafile_block_size

È possibile utilizzare il seguente comando per generare il dbv comando per tutti i datafiles

sqlplus /nologconnect / as sysdbaset feedback offset head offset echo offset linesize 200set pagesize 2500spool /tmp/dbvlogs/dbvchk.shselect 'dbv file=' || name || ' blocksize='|| block_size || ' logfile=' ||substr(name, instr(name, '/', -1, 1) +1) ||'.' || file# || '.log' from v$datafile/spool off

In caso di RAW device

select 'dbv file='||name||' blocksize='||block_size||' end='||(bytes/block_size)||' logfile='||substr (name, instr (name, '/', -1, 1) + 1)||'.'||file#||'.log'from v$datafile;

In caso di ASM storage

select 'dbv file=' || name || ' blocksize='|| block_size || ' USERID=sys/&SYS_PASSWORD logfile=' ||substr(name, instr(name, '/', -1, 1) +1) ||'.' || file# || '.log' from v$datafile/

Export

Tramite l’esportazione della tabella o schema di trovare anche la corruzione della tabella o schema

Ma la grande limitazione di esportazione è che Non riesce immediatamente dopo l’incontro con il primo corruzione., così l’immagine completa sarà persa-fuori.

ANALIZZA comando

ANALIZZA è stato indicato come la migliore utility che esegue il massimo dei controlli.

Questa è la facile utility per controllare le corruzioni associate all’indice su qualsiasi mezzo.

Per controllare la corruzione con una tabella di effettuare le seguenti operazioni:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;

Per verificare la corruzione, con un indice di effettuare le seguenti operazioni:

ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;

Per verificare la corruzione, con la tabella e il relativo indice(s) per eseguire il cross di riferimento controlli effettuare le seguenti operazioni:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;

Per le tabelle di partizione, dobbiamo usare il comando ANALYZE con IN INVALID_ROWS opzione, simile al seguente:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE INTO INVALID_ROWS;

Come correggere la Corruzione

un. Utilizzando blockrecover RMAN comando

Con Blocco di recuperare, solo i blocchi in fase di recupero non sono disponibili ,il resto file di dati è disponibile

RMAN >blockrecover datafile 10 blocco 1688

RMAN > BLOCKRECOVER CORRUZIONE ELENCO di RIPRISTINO FINO a quando il TEMPO ‘SYSDATE– 7’;

b. Utilizzo di file di dati, il ripristino da backup o standby (se si hanno)

c. Completare il recupero del database

d. In caso di danneggiamento dell’indice solo, siamo in grado di eliminare l’indice e ricreare

e. Siamo in grado di utilizzare DBMS_REPAIR. Non correggerà il blocco corrotto ma contrassegnerà quel blocco come skip e non controllerai quel blocco ora in poi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.