cum se identifică blocurile corupte în baza de date Oracle și se corectează

există două tipuri de corupție.

a. corupția fizică: acest lucru se întâmplă în general din cauza corupției mass-media. În acest caz, block nu are invalid checksum.it mai conține zero. Acesta este,în general ,rezultatul unei probleme de infrastructură, cum ar fi media, rețea, memorie.

RMAN block recover poate fi folosit pentru a elimina corupția fizică

vedem eroarea ORA-01578: ORACLE data block corupt în Jurnalul de alertă atunci când oracle detectează corupția fizică. Oracle detectează corupția verificând antetul blocului și subsolul blocului.

B. corupția logică: acest lucru se întâmplă atunci când oracle găsește antetul și subsolul blocului bun, dar găsește consistență internă în bloc. În general, se întâmplă din cauza unor erori în software-ul Oracle. Când oracle detectează, se aruncă eroarea în Jurnalul de alertă.

ORA-08103 – această eroare este o eroare logică de corupție pentru un anumit bloc de date.
ORA-00600-această eroare este legată de blocarea corupției și apare din cauza unui SCN mai mare decât al bazei de date SCN.

cum se verifică corupția bazei de date

corupția bazei de date poate fi găsită folosind metoda de mai jos

a. RMAN

c. verificarea jurnalului de alertă pentru o posibilă apariție

c. dbverify

d. Export

e. analizați comanda

RMAN

rulează sub comandă

RMAN> backup validate check logical database;

„verificați logic” opțiune este utilizată pentru a identifica atât corupții bloc fizic și logic.

putem folosi comanda de mai jos în cazul în care dorim să facem verificarea selectivă

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;

Selectați vizualizarea pentru a identifica blocurile corupte detectate de 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ă rugăm să rețineți, După ce un bloc corupt este reparat, rândul care identifică blocul este șters din vizualizare.

verificarea jurnalului de alertă pentru o posibilă apariție

verificați alerta. fișier jurnal pentru blocuri corupte, lista de fișiere de date.

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

dbverify

de asemenea, puteți utiliza utilitarul Dbverify pentru a identifica Corupțiile fizice și logice Intra-bloc.

dbv file=datafile_name blocksize=datafile_block_size

puteți utiliza comanda de mai jos pentru a genera comanda dbv pentru toate fișierele de date

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

în cazul dispozitivului RAW

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

în cazul stocării ASM

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

folosind exportul tabelului sau schemei veți găsi, de asemenea, corupția în tabelul sau schema

dar marea limitare a exportului este că eșuează imediat după ce a întâlnit prima corupție., deci imaginea completă va fi ratată.

analiza comanda

analiza a fost menționată ca cel mai bun utilitar care efectuează verificări maxime.

acesta este utilitarul ușor pentru a verifica corupțiile asociate cu index pe orice mijloace.

pentru a verifica corupția cu un tabel, faceți următoarele:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;

pentru a verifica corupția cu un index, faceți următoarele:

ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;

pentru a verifica corupția cu tabelul și indexul său pentru a efectua verificările de referință încrucișate, faceți următoarele:

ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;

pentru tabelele de partiții, trebuie să folosim analizați comanda cu opțiunea INTO INVALID_ROWS, similar cu următoarele:

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

cum se corectează corupția

a. Folosind comanda blockrecover RMAN

cu Block recover, numai blocurile recuperate nu sunt disponibile ,rest datafile este disponibil

RMAN >blockrecover datafile 10 block 1688

RMAN > BLOCKRECOVER lista de corupție RESTORE până la ora ‘SYSDATE– 7’;

b. utilizarea datafile recovery din backup sau standby (dacă aveți)

c. recuperarea completă a bazei de date

d. în cazul în care este doar corupția indexului, putem renunța la index și îl putem recrea

e. putem folosi dbms_repair. Nu va corecta blocul corupt, dar va marca acel bloc ca skip și nu veți verifica acel bloc acum

Lasă un răspuns

Adresa ta de email nu va fi publicată.