det finnes to typer korrupsjon.
A. Fysisk korrupsjon: Dette skjer vanligvis på grunn av mediekorrupsjon. I dette tilfellet har block ugyldig checksum.it mai inneholder null. Dette er vanligvis et resultat av infrastrukturproblem som media, nettverk, minne.
rman block recover kan brukes til å fjerne fysisk korrupsjon
VI ser feilen ORA-01578: ORACLE data block ødelagt i varslingsloggen når oracle oppdager fysisk korrupsjon. Oracle oppdage korrupsjon ved å sjekke blokken header og blokk bunntekst.
b. Logisk korrupsjon: dette skjer når oracle finner blokkoverskrift og bunntekst bra, men det finner intern konsistens i blokken. Vanligvis skjer det på grunn av noen feil I Oracle-programvare. Når oracle oppdager det, kaster den feilen i varslingsloggen.
ORA-08103 – denne feilen er en logisk korrupsjonsfeil for en bestemt datablokk.
ORA-00600 – denne feilen er relatert til blokk korrupsjon, og oppstår på grunn av en høyere SCN enn database SCN.
hvordan sjekke databasen korrupsjon
database korrupsjon kan finne ved hjelp av metoden nedenfor
A. RMAN
c. Sjekke alert logg for mulig forekomst
c. dbverify
D. Export
E. Analyser kommando
rman
kjør under kommando
RMAN> backup validate check logical database;
«SJEKK LOGISK» alternativet brukes til å identifisere Både Fysiske Og Logiske Blokk Korrupsjon.
vi kan bruke under kommandoen hvis vi vil sjekke selektivt
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;
Velg visningen for å identifisere de ødelagte blokkene som er oppdaget AV 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;
Vær oppmerksom På At etter at en korrupt blokk er reparert, slettes raden som identifiserer blokken fra visningen.
Kontrollerer varslingslogg for mulig forekomst
Kontroller varsel. loggfil for ødelagte blokker, datafil liste.
For ex:- ORA-01578: ORACLE data block corrupted (file # 11, block # 45)ORA-01110: data file 5: '/xyz/db01.dbf'
dbverify
Du kan også bruke dbverify verktøyet til å identifisere Fysiske Og Logiske Intra Blokk Korrupsjon.
dbv file=datafile_name blocksize=datafile_block_size
du kan bruke kommandoen nedenfor til å generere dbv-kommandoen for alle datafilene
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
I TILFELLE RAW-enhet
select 'dbv file='||name||' blocksize='||block_size||' end='||(bytes/block_size)||' logfile='||substr (name, instr (name, '/', -1, 1) + 1)||'.'||file#||'.log'from v$datafile;
I TILFELLE ASM-lagring
select 'dbv file=' || name || ' blocksize='|| block_size || ' USERID=sys/&SYS_PASSWORD logfile=' ||substr(name, instr(name, '/', -1, 1) +1) ||'.' || file# || '.log' from v$datafile/
Eksporter
ved hjelp av eksport av tabell eller skjema finner du også korrupsjonen i tabellen eller skjemaet
men den store begrensningen med eksport er at den mislykkes umiddelbart etter å ha møtt den første korrupsjonen., så komplett bilde vil bli savnet.
ANALYSER kommando
ANALYSER har blitt referert til som det beste verktøyet som utfører maksimale kontroller.
Dette er det enkle verktøyet for å sjekke korrupsjonene knyttet til indeks på noen måte.
for å sjekke korrupsjonen med et bord gjør du følgende:
ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;
for å sjekke korrupsjonen med en indeks gjør du følgende:
ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;
for å sjekke korrupsjonen med tabellen og dens indeks(er) for å utføre kryssreferansekontrollene, gjør du følgende:
ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;
for partisjonstabeller må vi bruke ANALYSER kommando MED INTO INVALID_ROWS alternativ, ligner på følgende:
ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE INTO INVALID_ROWS;
slik retter Du Korrupsjonen
a. Bruke blockrecover rman kommando
Med Block recover, bare blokkene som gjenopprettes er ikke tilgjengelig ,rest datafile er tilgjengelig
RMAN >blockrecover datafile 10 block 1688
RMAN > BLOCKRECOVER CORRUPTION LIST RESTORE UNTIL TIME ‘SYSDATE– 7’;
b. Bruke datafilgjenoppretting fra backup eller standby (hvis du har)
c. Komplett databasegjenoppretting
d. hvis det bare er indekskorrupsjon, kan vi slippe indeksen og gjenskape den
e. Vi kan bruke DBMS_REPAIR. Det vil ikke rette den korrupte blokken, men det vil markere den blokken som hopp over, og du vil ikke sjekke den blokken nå og fremover