hoe corrumpeertblokken in de Oracle-database te identificeren en te corrigeren

er zijn twee soorten corruptie.

a. fysieke corruptie: dit gebeurt meestal als gevolg van corruptie in de media. In dit geval heeft blok ongeldig checksum.it mei bevat nul. Dit is over het algemeen het gevolg van infrastructuur probleem zoals media,netwerk ,geheugen.

RMAN block recover kan worden gebruikt om fysieke corruptie te verwijderen

we zien de fout ORA-01578: Oracle-gegevensblok is beschadigd in waarschuwingslogboek wanneer Oracle fysieke corruptie detecteert. Oracle detecteer corruptie door de block header en block footer te controleren.

B. logische corruptie: dit gebeurt wanneer Oracle de kop-en voettekst van het blok goed vindt, maar de interne consistentie in het blok vindt. Over het algemeen gebeurt het als gevolg van een bug in Oracle software. Wanneer oracle detecteert, gooit de fout in alert log.

ORA-08103-deze fout is een logische corruptie fout voor een bepaald gegevensblok.
ORA-00600 – deze fout is gerelateerd aan blokcorruptie , en treedt op als gevolg van een hogere SCN dan van database SCN.

hoe de database-corruptie te controleren

Database-corruptie kan worden gevonden met behulp van de onderstaande methode

a. RMAN

c. waarschuwingslogboek controleren op mogelijk voorkomen

c. dbverify

d. Export

e. Analysecommando

RMAN

voer onderstaande opdracht uit

RMAN> backup validate check logical database;

“CHECK logische” optie wordt gebruikt om zowel fysieke en logische blok corruptie te identificeren.

we kunnen het onderstaande commando gebruiken als we selectief willen controleren

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;

Selecteer de weergave om de beschadigde blokken te identificeren die door RMAN zijn gedetecteerd.

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; 

nadat een beschadigd blok is gerepareerd, wordt de rij die het blok identificeert uit de weergave verwijderd.

alert log controleren op mogelijk voorkomen

Check alert. logbestand voor beschadigde blokken, lijst met gegevensbestanden.

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

dbverify

u kunt het hulpprogramma dbverify ook gebruiken om fysieke en logische intra-Blokcorrupties te identificeren.

dbv file=datafile_name blocksize=datafile_block_size

u kunt de onderstaande opdracht gebruiken om de DBV-opdracht te genereren voor alle databestanden

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 het geval van RAW-apparaat

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 het geval van ASM-opslag

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

met behulp van de export van tabel of schema vindt u ook de corruptie in de tabel of schema

maar de grote beperking bij export is dat het onmiddellijk mislukt na het tegenkomen van de eerste corruptie., dus het complete beeld zal worden gemist-out.

ANALYSECOMMANDO

ANALYSEWORDT aangeduid als het beste hulpprogramma dat maximale controles uitvoert.

dit is het eenvoudige hulpprogramma om de corrupties geassocieerd met index op alle manieren te controleren.

om de corruptie met een tabel te controleren, doet u het volgende::

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;

om de corruptie te controleren met een index Doe het volgende:

ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;

om de corruptie te controleren met de tabel en de index (s) om de kruisverwijzingscontroles uit te voeren, doet u het volgende:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;

voor partitietabellen moeten we de opdracht analyseren gebruiken met de optie in INVALID_ROWS, vergelijkbaar met de volgende:

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

hoe de corruptie te corrigeren

a. Met behulp van blockrecover RMAN commando

Blok herstellen, alleen de blokken die hersteld zijn niet beschikbaar ,de rest databestand is beschikbaar

RMAN >blockrecover databestand 10 blok 1688

RMAN > BLOCKRECOVER CORRUPTIE LIJST HERSTELLEN TOT TIJD’, SYSDATE– 7′;

b. Met databestand van het herstel van de back-up of stand-by (als je die hebt)

c. Complete database recovery

d. In het geval van corruptie index alleen, we kunnen daling van de index en opnieuw

e. We kunnen gebruik maken van DBMS_REPAIR. Het zal het corrupte blok niet corrigeren, maar het zal dat blok markeren als overslaan en u zult dat blok nu niet controleren

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.