Database katkokset voivat olla suunnattoman kalliita dataohjautuville organisaatioille, tuoden yrityksesi lähes pysähdyksiin. Yksi yleisimmistä tietokantojen katkosten syistä on data block-korruptio. Tässä artikkelissa, keskustelemme siitä, miten voit havaita ja korjata ongelman estää korruption sisällä Oracle tietokanta.
mikä on datalohkon korruptio?
datalohko korruptoituu aina, kun tieto ei ole odotetussa tilassaan. Lohko voi olla sisältöä, jotka eivät ole sisäisesti yhdenmukaisia, tai se on voitu muuttaa tunnistamattomaksi osaksi Oracle Tietokantamuotoa.
jotkut datalohkon korruptiot ovat suhteellisen vähäisiä, ja ne vaikuttavat vain yhteen lohkoon. Toiset turmelevat merkittävän osan tietokannasta tehden siitä käyttökelvottoman ja johtaen kriittisen tiedon menetykseen.
miksi datalohko korruptoituu?
Datalohkovaurioita voi esiintyä milloin tahansa, kun tietoja muutetaan, ja ne voidaan jäljittää sekä laitteisto-että ohjelmisto-ongelmiin. Ongelmat minkä tahansa tai kaikkien seuraavien komponenttien kanssa voivat johtaa datalohkon korruptioihin:
- kiintolevy
- Levyohjain
- käyttöjärjestelmä
- Storage area network (SAN)
- Storage device
miten voit estää datalohkon korruption?
datalohkon korruptioita on vaikea estää, koska ne ovat luonnostaan arvaamattomia. Korruptio on väistämätöntä nykyisissä monimutkaisissa tietokantaympäristöissä.
voit kuitenkin edelleen pyrkiä lieventämään datalohkon korruptioiden vaikutuksia vankan varmuuskopiointi-ja palautusstrategian avulla. Oracle tarjoaa erilaisia työkaluja ja ratkaisuja näihin tarkoituksiin, kuten:
- Oracle Data Guard: suojaa yritystietokantoja katastrofin tai korruption varalta.
- Data Recovery Advisor: diagnosoi tietojen häviämisen tai korruption ja tekee korjauksia.
- Oraclen takauma: palauttaa tietokantataulukot tai rivit aikaisempaan tilaan.
- Oracle Recovery Manager: Varmuuskopioi ja palauttaa Oraclen tietokannat.
- Oracle Secure Backup: Varmuuskopioi tiedostojärjestelmän tiedot ja Oraclen tietokantatiedostot nauhalle.
miten tunnistat ja valvot datalohkon korruptiota?
parhaista yrityksistäsi huolimatta datalohko korruptoituu milloin tahansa. Onneksi on olemassa useita tapoja, joilla Oracle voi havaita ja korjata tiedot estää korruptio:
- Oracle Recovery Manager (RMAN)
- DBVerify
- analysis command
- DB_BLOCK_CHECKING parametri
- Block media recovery (BMR)
- DBMS_REPAIR
Oracle Recovery Manager (RMAN)
jos haluat tarkistaa tietokannasta fyysisen ja loogisen korruption, suorita seuraava komento Oracle RMAN: ssa:
- varmuuskopioida tarkista looginen tietokanta ARKISTOLOKI kaikki;
validoi-komennolla Oracle RMAN: ssa voidaan validoida tiedostoja, pöytäavaruuksia ja jopa kokonaisia tietokantoja. Esimerkiksi:
- validoi DATAFILE ” / u01/oradata/ORCL / system01.dbf”;
- VALIDATE TABLESPACE users;
- VALIDATE DATABASE;
jos Oracle RMAN havaitsee datalohkon korruptiot, ne näkyvät V$DATABASE_BLOCK_CORRUPTION-näkymässä.
DBVerify
DBVerify on ulkoinen komentorivityökalu, jolla validoidaan online-ja offline-tietokantoja ja tiedostoja, mukaan lukien varmuuskopiot. Alla oleva esimerkki osoittaa DBV-komennon käytön:
- DBV file=/u01/oradata/ORACL/system01.DBF feedback=10000 lohkokoko=8192
huomaa, että et voi käyttää Dbverifyä Oracle-ohjaustiedostoihin tai lokkien uusimiseen.
ANALYZE-komento
voit käyttää analysis… VALIDATE STRUCTURE construction-toimintoa objektin datalohkojen todentamiseen. Kun analyysi on valmis, tarkista INVALID_ROWS-taulukko nähdäksesi vioittuneet tiedot.
luodaksesi INVALID_ROWS-taulukon suorita seuraava komento SQL: ssä:
- @$ORACLE_HOME/rdbms/admin / UTLVALID.SQL
toiseksi validoi taulukko-ja indeksirakenne seuraavalla komennolla:
- analysoi pöytä scott.emp validoi rakenteen CASCADE;
db_block_checking parametri
asettamalla db_block_checking parametri, voit olla Oracle tarkista tietokannan lohkot johdonmukaisuus. Huomaa, että tämä voi lisätä jopa 10 prosenttia yläpuolella palvelimelle, joten käytä tätä vaihtoehtoa vain, jos suorituskyky ei ole suuri merkitys.
Block media recovery (BMR)
Block media recovery (BMR) voit palauttaa yhden tai useamman datalohkon vaikuttamatta koko tiedostoon. Tämän seurauksena, koet pienempi keskimääräinen aika korjata (MTTR)ja nauttia korkeampi saatavuus, koska sinun tarvitsee vain ottaa vaikuttaa lohkot offline.
tämä taktiikka on hyödyllinen, kun vain rajallinen määrä datalohkoja on vioittunut. Voit suorittaa BMR: n vain Oracle RMAN: ssa BLOCKRECOVER-komennolla.
DBMS_REPAIR
Oraclen dbms_repair-paketti voi sekä havaita että korjata korruption. Tätä varten sinun on ensin luotava kaksi hallintataulukkoa. Nämä taulukot sisältävät luettelon korruptoituneista lohkoista, ja niihin viittaavat indeksinäppäimet:
BEGIN
DBMS_REPAIR.admin_tables (
table_name = > ”REPAIR_TABLE”,
table_type = > DBMS_REPAIR.korjattava_table,
action = > DBMS_KORJAUS.create_action,
tablespace = > ”USERS”);
DBMS_REPAIR.admin_tables (
table_name = > ”ORPHAN_KEY_TABLE”,
table_type = > DBMS_REPAIR.orphan_table,
action = > DBMS_REPAIR.create_action,
tablespace = > ”USERS”);
END;
toinen vaihe on käyttää CHECK_OBJECT-menetelmää taulukon tutkimiseen:
SET SERVEROUTPUT ON
Declaration
v_num_corrupt INT;
BEGIN
v_num_corrupt := 0;
DBMS_KORJAA.check_object (
schema_name => ”SCOTT”,
object_name => ”DEPT”,
repair_table_name => ”REPAIR_TABLE”,
corrupt_count => v_num_corrupt;
dbms_output.put_line (’number corrupt:’ | | to_char (v_num_corrupt));
END;
seuraava, käytä fix_corrupt_blocks-menettelyä viallisten lohkojen merkitsemiseen:
set SERVEROUTPUT ON
Declaration
v_num_fix INT;
BEGIN
v_num_fix := 0;
DBMS_KORJAA.fix_corrupt_blocks (
schema_name = > ”SCOTT”,
object_name => ”DEPT”,
object_type => Dbms_Repair.table_object,
repair_table_name = > ”REPAIR_TABLE”,
fix_count = > v_num_fix);
DBMS_OUTPUT.put_line (”num fix:” | / TO_CHAR (v_num_fix));
END;
seuraava vaihe on tarkistaa orvot avaimet, jotka ovat avainmerkintöjä, jotka viittaavat vialliseen datalohkoon:
SET SERVEROUTPUT ON
Declaration
v_num_orphans INT;
BEGIN
v_num_orphans := 0;
DBMS_KORJAA.dump_orphan_keys (
schema_name = > ”SCOTT”,
object_name => ”PK_DEPT”,
object_type => DBMS_REPAIR.index_object,
repair_table_name = > ”REPAIR_TABLE”,
orphan_table_name => ”ORPHAN_KEY_TABLE”,
key_count => v_num_orphans);
DBMS_OUTPUT.put_line (’orphan key count:’ | | to_char (v_num_orphans));
END;
jos orpoja avaimia on vähintään 1, tietokannan indeksi on rakennettava uudelleen REBUILD_FREELISTS-menetelmällä:
BEGIN
DBMS_REPAIR.rebuild_freelists (
schema_name = > ”SCOTT”,
object_name => ”DEPT”,
object_type => DBMS_REPAIR.table_object);
END;
käytä lopuksi skip_corrupt_blocks-menettelyä varmistaaksesi, että korruptoituneet lohkot ohitetaan kyselyissä:
BEGIN
DBMS_REPAIR.skip_corrupt_blocks (
schema_name = > ”SCOTT”,
object_name => ”DEPT”,
object_type => DBMS_REPAIR.table_object,
flags = > DBMS_REPAIR.skip_flag);
loppu;
Conclusion
vaikka data block corruption on valitettava tosiasia, Oraclella on kypsä, laaja valikoima työkaluja yritystietojesi suojaamiseen ja palauttamiseen. Käyttämällä ohjelmistoja, kuten Oracle Data Guard ja Oracle RMAN, sekä suorittamalla säännöllisiä korruptiotarkastuksia, auttaa sinua torjumaan ongelman data block korruption.