existují dva typy korupce.
a. fyzická korupce: k tomu dochází obecně kvůli korupci médií. V tomto případě má blok neplatný checksum.it Květen obsahuje nulu. To je obecně výsledkem problému infrastruktury, jako jsou média ,síť, paměť.
RMAN block recover lze použít k odstranění fyzické poškození
vidíme chybu ORA-01578: ORACLE datový blok poškozen v záznamu upozornění, když oracle zjistí fyzické poškození. Oracle detekuje poškození kontrolou záhlaví bloku a zápatí bloku.
b. logická korupce: to se stane, když oracle najde záhlaví bloku a zápatí dobré, ale najde vnitřní konzistenci v bloku. Obecně se to děje kvůli nějaké chybě v softwaru Oracle. Když to oracle zjistí, vyvolá chybu v protokolu upozornění.
ORA-08103 – tato chyba je logickou chybou poškození konkrétního datového bloku.
ora-00600 – tato chyba souvisí s poškozením bloku a vyskytuje se v důsledku vyššího SCN než databáze SCN.
jak zkontrolovat korupci databáze
korupci databáze lze najít pomocí níže uvedené metody
a. RMAN
c. kontrola záznamu upozornění na možný výskyt
c. dbverify
d. Export
e. analyzovat příkaz
RMAN
spustit pod příkazem
RMAN> backup validate check logical database;
„kontrola logického“ volba se používá k identifikaci fyzických i logických poškození bloku.
můžeme použít níže uvedený příkaz v případě, že chceme provést selektivní kontrolu
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;
vyberte zobrazení pro identifikaci poškozených bloků detekovaných RMANEM.
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;
Vezměte prosím na vědomí, že po opravě poškozeného bloku se řádek identifikující blok z pohledu odstraní.
kontrola záznamu upozornění na možný výskyt
kontrola výstrahy. soubor protokolu pro poškozené bloky, seznam datových souborů.
For ex:- ORA-01578: ORACLE data block corrupted (file # 11, block # 45)ORA-01110: data file 5: '/xyz/db01.dbf'
dbverify
můžete také použít nástroj dbverify k identifikaci fyzických a logických poškození uvnitř bloku.
dbv file=datafile_name blocksize=datafile_block_size
pomocí níže uvedeného příkazu můžete vygenerovat příkaz dbv pro všechny datové soubory
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
v případě surového zařízení
select 'dbv file='||name||' blocksize='||block_size||' end='||(bytes/block_size)||' logfile='||substr (name, instr (name, '/', -1, 1) + 1)||'.'||file#||'.log'from v$datafile;
v případě úložiště 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
pomocí exportu tabulky nebo schématu najdete také poškození v tabulce nebo schématu
ale velkým omezením exportu je to, že selže okamžitě po setkání s první korupce., takže kompletní obraz bude chybět-out.
analyzovat příkaz
analyzovat byl označován jako nejlepší nástroj, který provádí maximální kontroly.
Jedná se o snadný nástroj pro kontrolu korupce spojené s indexem jakýmikoli prostředky.
Chcete-li zkontrolovat poškození pomocí tabulky, proveďte následující:
ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE;
Chcete-li zkontrolovat korupci pomocí indexu, proveďte následující:
ANALYZE INDEX <OWNER.INDEX_NAME> VALIDATE STRUCTURE;
Chcete-li zkontrolovat poškození pomocí tabulky a jejího indexu(indexů), proveďte následující kontroly křížového odkazu:
ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE;
pro tabulky oddílů musíme použít příkaz analyzovat s volbou do INVALID_ROWS, podobně jako následující:
ANALYZE TABLE <OWNER.TABLE_NAME> VALIDATE STRUCTURE CASCADE INTO INVALID_ROWS;
jak opravit korupci
a. Použití příkazu blockrecover RMAN
s Block recover, pouze obnovené bloky nejsou k dispozici, rest datafile je k dispozici
RMAN >blockrecover datafile 10 block 1688
RMAN > BLOCKRECOVER seznam korupce obnovit do doby ‚SYSDATE– 7‘;
b. použití datafile zotavení ze zálohy nebo pohotovostního režimu (pokud máte)
c. kompletní obnova databáze
d. v případě, že je index korupce pouze, můžeme klesnout index a znovu jej
e. můžeme použít DBMS_REPAIR. Nebude opravit poškozený blok, ale označí tento blok jako přeskočit a nebudete kontrolovat tento blok nyní