Adatbázis kiesések rendkívül költséges lehet az adatközpontú szervezetek, így a vállalkozás egy majdnem leállt. Az adatbázis-kiesések egyik leggyakoribb oka az adatblokkok sérülése. Ebben a cikkben azt fogjuk megvitatni, hogyan lehet észlelni és kijavítani az Oracle adatbázisán belüli blokkolási korrupciót.

mi az adatblokk sérülése?

az adatblokkok sérülései akkor fordulnak elő, amikor az adatok nem a várt állapotban vannak. Lehet, hogy a blokk tartalma nem belsőleg konzisztens, vagy megváltoztatták, hogy felismerhetetlen legyen az Oracle Database formátum részeként.

néhány adatblokk-sérülés viszonylag csekély, csak egyetlen blokkot érint. Mások megrongálják az adatbázis jelentős részét, használhatatlanná téve azt, ami kritikus információk elvesztéséhez vezet.

miért fordulnak elő adatblokkok?

az adatblokkok sérülései bármikor előfordulhatnak, amikor az adatok megváltoznak, és hardver-és szoftverproblémákra vezethetők vissza. Az alábbi összetevők bármelyikével vagy mindegyikével kapcsolatos problémák adatblokkok sérülését eredményezhetik:

  • merevlemez
  • lemezvezérlő
  • operációs rendszer
  • Storage area network (SAN)
  • tárolóeszköz

hogyan lehet megakadályozni az adatblokkok sérülését?

az adatblokkok sérüléseit nehéz megelőzni, mert eleve kiszámíthatatlanok. Valójában a korrupció elkerülhetetlen a mai rendkívül összetett adatbázis-környezetben.

azonban továbbra is dolgozhat az adatblokkok sérüléseinek hatásainak enyhítésén egy robusztus biztonsági mentési és helyreállítási stratégiával. Az Oracle különféle eszközöket és megoldásokat kínál erre a célra, többek között:

  • Oracle Data Guard: védi a vállalati adatbázisokat katasztrófa vagy korrupció esetén.
  • Data Recovery Advisor: diagnosztizálja az adatvesztést vagy a korrupciót, és javításokat végez.
  • Oracle Flashback: visszaállítja az adatbázis táblákat vagy sorokat egy korábbi állapotba.
  • Oracle Recovery Manager: Az Oracle adatbázisok biztonsági mentése és helyreállítása.
  • Oracle Secure Backup: fájlrendszer-adatok és Oracle Database-fájlok biztonsági mentése szalagra.

hogyan észleli és figyeli az adatblokkok sérülését?

minden erőfeszítése ellenére az adatblokkok sérülése bármikor előfordulhat. Szerencsére számos módja van annak, hogy az Oracle észlelje és javítsa az adatblokkok sérülését:

  • Oracle Recovery Manager (rman)
  • DBVerify
  • elemezze parancs
  • DB_BLOCK_CHECKING paraméter
  • blokk media recovery (BMR)
  • DBMS_REPAIR

Oracle Recovery Manager (RMAN)

az adatbázis fizikai és logikai sérülésének ellenőrzéséhez futtassa a következő parancsot az Oracle rman alkalmazásban:

  • biztonsági mentés ellenőrzése logikai adatbázis ARCHIVELOG ALL;

a VALIDATE parancs az Oracle RMAN lehet használni, hogy érvényesítse a fájlokat, tablespaces, sőt egész adatbázisok. Például:

  • érvényesítse a ‘/u01/oradata/ORCL/system01 adatfájlt.dbf’;
  • táblaterület felhasználók ellenőrzése;
  • adatbázis ellenőrzése;

ha az Oracle RMAN bármilyen adatblokk-korrupciót észlel, akkor azok a V$DATABASE_BLOCK_CORRUPTION nézetben jelennek meg.

DBVerify

a DBVerify egy külső parancssori segédprogram az online és offline adatbázisok és fájlok, beleértve a biztonsági mentéseket is. Az alábbi példa bemutatja a DBV parancs használatát:

  • dbv fájl= / u01 / oradata / ORACL / system01.DBF visszacsatolás=10000 blokkméret=8192

ne feledje, hogy a Dbverify nem használható Oracle vezérlőfájlokhoz vagy redo naplókhoz.

ANALYZ parancs

az ANALYZ… VALIDATE STRUCTURE konstrukcióval ellenőrizheti az objektum adatblokkjait. Az elemzés befejezése után ellenőrizze az INVALID_ROWS táblát a sérült adatok megtekintéséhez.

az INVALID_ROWS tábla első létrehozásához futtassa a következő parancsot az SQL-ben:

  • @$ORACLE_HOME / rdbms / admin / UTLVALID.SQL

másodszor, ellenőrizze a táblázat és az index szerkezetét a következő paranccsal:

  • elemezze táblázat scott.emp érvényesítése struktúra kaszkád;

DB_BLOCK_CHECKING paraméter

a db_block_checking paraméter beállításával az Oracle ellenőrizheti az adatbázis-blokkokat az önkonzisztencia érdekében. Vegye figyelembe, hogy ez akár 10 százalékos többletköltséget is jelenthet a szerver számára, ezért csak akkor használja ezt a lehetőséget, ha a teljesítménynek nincs nagy jelentősége.

Block media recovery (BMR)

a block media recovery (BMR) lehetővé teszi egy vagy több adatblokk helyreállítását anélkül, hogy a fájl egészét befolyásolná. Ennek eredményeként alacsonyabb átlagos javítási időt (MTTR) tapasztalhat, és nagyobb rendelkezésre állást élvezhet, mivel csak az érintett blokkokat kell offline állapotba hoznia.

ez a taktika akkor hasznos, ha csak korlátozott számú adatblokk sérült meg. A BMR-t csak az Oracle RMAN-en belül hajthatja végre a BLOCKRECOVER paranccsal.

DBMS_REPAIR

az Oracle DBMS_REPAIR csomagja képes felismerni és kijavítani a korrupciót. Ehhez először létre kell hoznia két adminisztrációs táblát. Ezek a táblák tartalmazzák a sérült blokkok listáját, valamint az ezekre a blokkokra mutató indexkulcsokat:

kezdje

DBMS_REPAIR.admin_tables (

table_name => ‘REPAIR_TABLE’,

table_type => DBMS_REPAIR.repair_table,

action => DBMS_REPAIR.create_action,

tablespace => ‘felhasználók’);

DBMS_REPAIR.admin_tables (

table_name => ‘ORPHAN_KEY_TABLE’,

table_type => DBMS_REPAIR.orphan_table,

action => DBMS_REPAIR.create_action,

tablespace => ‘USERS’);

END;

a második lépés a check_object eljárás használata a táblázat megvizsgálásához:

SERVEROUTPUT beállítása

DEKLARÁLÁS

v_num_corrupt INT;

BEGIN

v_num_corrupt := 0;

DBMS_REPAIR.check_object (

schema_name => ‘SCOTT’,

object_name => ‘osztály’,

repair_table_name => ‘REPAIR_TABLE’,

corrupt_count => v_num_corrupt);

dbms_output.put_line (‘number corrupt:’ | | TO_CHAR (v_num_corrupt));

END;

Ezután használja a FIX_CORRUPT_BLOCKS eljárást a sérült blokkok megjelölésére:

SERVEROUTPUT beállítása

DEKLARÁLÁS

v_num_fix INT;

BEGIN

v_num_fix := 0;

DBMS_REPAIR.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;

a következő lépés az árva kulcsok ellenőrzése, amelyek olyan kulcsbejegyzések, amelyek sérült adatblokkra mutatnak:

SERVEROUTPUT beállítása

DECLARE

v_num_orphans INT;

BEGIN

v_num_orphans := 0;

DBMS_REPAIR.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;

ha 1 vagy több árva kulcs van, akkor újra kell építenie az adatbázis indexet a REBUILD_FREELISTS eljárással:

BEGIN

DBMS_REPAIR.rebuild_freelists (

schema_name => ‘SCOTT’,

object_name => ‘DEPT’,

object_type => DBMS_REPAIR.table_object);

END;

végül használja a SKIP_CORRUPT_BLOCKS eljárást annak biztosítására, hogy a sérült blokkokat kihagyja a lekérdezések során:

BEGIN

DBMS_REPAIR.skip_corrupt_blocks (

schema_name => ‘SCOTT’,

object_name => ‘DEPT’,

object_type => DBMS_REPAIR.table_object,

flags => DBMS_REPAIR.skip_flag);

vége;

következtetés

bár az adatblokkok sérülése sajnálatos tény az életben, az Oracle Érett, széles körű eszközökkel rendelkezik a vállalati adatok védelmére és helyreállítására. Az olyan szoftverek használata, mint az Oracle Data Guard és az Oracle rman, valamint a rendszeres korrupciós ellenőrzések segítenek ellensúlyozni az adatblokkok sérülését.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.