výpadky databáze mohou být pro organizace založené na datech nesmírně nákladné, čímž se vaše podnikání zastaví. Jednou z nejčastějších příčin výpadků databáze je poškození datových bloků. V tomto článku budeme diskutovat o tom, jak můžete detekovat a opravit problém poškození bloků v databázi Oracle.

co je poškození datového bloku?

k poškození datového bloku dochází vždy, když data nejsou v očekávaném stavu. Blok může mít obsah, který není vnitřně konzistentní, nebo může být změněn tak, aby byl nerozpoznatelný jako součást formátu databáze Oracle.

některá poškození datových bloků jsou relativně malá a ovlivňují pouze jeden blok. Jiní poškozují významnou část databáze, což ji činí nepoužitelnou a vede ke ztrátě důležitých informací.

proč dochází k poškození datových bloků?

poškození datových bloků může nastat kdykoli, když jsou data změněna, a lze je vysledovat zpět k hardwarovým i softwarovým problémům. Problémy s některou nebo všemi následujícími součástmi mohou mít za následek poškození datových bloků:

  • pevný disk
  • Disk controller
  • operační systém
  • Storage area network (SAN)
  • Storage device

jak můžete zabránit poškození datových bloků?

poškození datových bloků je obtížné zabránit, protože jsou ze své podstaty nepředvídatelné. Korupce je v dnešních vysoce složitých databázových prostředích nevyhnutelná.

stále však můžete pracovat na zmírnění účinků poškození datových bloků pomocí robustní strategie zálohování a obnovy. Oracle poskytuje pro tyto účely řadu nástrojů a řešení, včetně:

  • Oracle Data Guard: chrání podnikové databáze v případě katastrofy nebo poškození.
  • poradce pro obnovu dat: diagnostikuje ztrátu nebo poškození dat a provádí opravy.
  • Oracle Flashback: obnoví databázové tabulky nebo řádky do dřívějšího stavu.
  • Oracle Recovery Manager: zálohuje a obnovuje databáze Oracle.
  • Oracle Secure Backup: zálohuje data systému souborů a databázové soubory Oracle na pásku.

jak detekujete a monitorujete poškození datového bloku?

navzdory vašemu nejlepšímu úsilí může dojít k poškození datového bloku kdykoli. Naštěstí Existuje několik způsobů, jak může Oracle detekovat a opravit poškození datového bloku:

  • Oracle Recovery Manager (RMAN)
  • DBVerify
  • analyzujte příkaz
  • parametr DB_BLOCK_CHECKING
  • Block media recovery (BMR)
  • DBMS_REPAIR

Oracle Recovery Manager (RMAN)

Chcete-li zkontrolovat databázi pro fyzické a logické poškození, spusťte v Oracle RMAN následující příkaz:

  • zálohování ověřit kontrola logické databáze ARCHIVELOG vše;

příkaz VALIDATE v Oracle RMAN lze použít k ověření souborů, tabulek a dokonce i celých databází. Příklad:

  • VALIDATE DATAFILE ‚ / u01 / oradata / ORCL / system01.dbf‘;
  • VALIDATE tablespace users;
  • VALIDATE DATABASE;

pokud Oracle RMAN detekuje poškození datových bloků, zobrazí se v zobrazení v $ DATABASE_BLOCK_CORRUPT.

DBVerify

DBVerify je externí nástroj příkazového řádku pro ověřování online a offline databází a souborů, včetně záloh. Níže uvedený příklad ukazuje použití příkazu dbv:

  • dbv file=/u01/oradata / ORACL / system01.dbf feedback=10000 blocksize=8192

DBVerify nelze použít pro řídicí soubory Oracle ani pro protokoly opakování.

analyzovat příkaz

můžete použít analýzu… validovat konstrukci struktury k ověření datových bloků v objektu. Po dokončení analýzy zkontrolujte tabulku INVALID_ROWS a zobrazte poškozená data.

Chcete – li nejprve vytvořit tabulku INVALID_ROWS, spusťte v SQL následující příkaz:

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

za druhé, ověřte strukturu tabulky a indexu následujícím příkazem:

  • analyzujte tabulku scott.EMP VALIDATE STRUCTURE CASCADE;

parametr DB_BLOCK_CHECKING

nastavením parametru DB_BLOCK_CHECKING na, Můžete mít Oracle zkontrolovat databázové bloky pro vlastní konzistenci. Všimněte si, že to může přidat až 10 procent režie serveru, takže tuto možnost použijte pouze v případě, že výkon nemá velký význam.

Block media recovery (BMR)

Block media recovery (BMR) umožňuje obnovit jeden nebo více datových bloků bez ovlivnění souboru jako celku. Výsledkem je nižší průměrná doba opravy (MTTR) a vyšší dostupnost, protože postižené bloky musíte pouze offline.

tato taktika je užitečná, pokud byl poškozen pouze omezený počet datových bloků. BMR můžete provádět pouze v rámci Oracle RMAN pomocí příkazu BLOCKRECOVER.

DBMS_REPAIR

balíček Dbms_repair společnosti Oracle dokáže detekovat i opravit poškození. Chcete-li tak učinit, musíte nejprve vytvořit dvě tabulky pro správu. Tyto tabulky budou obsahovat seznam poškozených bloků a indexové klávesy ukazující na tyto bloky:

začít

DBMS_REPAIR.admin_tables (

table_name => ‚REPAIR_TABLE‘,

table_type => DBMS_REPAIR.repair_table,

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

druhým krokem je použití postupu CHECK_OBJECT k prozkoumání tabulky:

SET SERVEROUTPUT na

deklarovat

v_num_corrupt INT;

BEGIN

v_num_corrupt := 0;

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

dále použijte proceduru FIX_CORRUPT_BLOCKS k označení poškozených bloků:

SET SERVEROUTPUT ON

deklarovat

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;

dalším krokem je kontrola osiřelých klíčů, což jsou klíčové položky, které poukazují na poškozený datový blok:

SET SERVEROUTPUT na

deklarovat

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_NAME‘,

orphan_table_name => ‚ORPHAN_KEY_TABLE‘,

key_count => v_num_orphans);

DBMS_OUTPUT.put_line (‚orphan key count:‘ | / TO_CHAR (v_num_orphans));

END;

pokud existuje 1 nebo více osiřelých klíčů, musíte znovu vytvořit index databáze pomocí procedury REBUILD_FREELISTS:

BEGIN

DBMS_REPAIR.rebuild_freelists (

schema_name => ‚SCOTT‘,

object_name => ‚DEPT‘,

object_type => DBMS_REPAIR.table_object);

END;

nakonec použijte proceduru SKIP_CORRUPT_BLOCKS, abyste zajistili, že poškozené bloky budou během dotazů přeskočeny:

začněte

DBMS_REPAIR.skip_corrupt_blocks (

schema_name => ‚SCOTT‘,

object_name => ‚DEPT‘,

object_type => DBMS_REPAIR.table_object,

flags => DBMS_REPAIR.skip_flag);

konec;

závěr

zatímco poškození datového bloku je nešťastnou skutečností života, Oracle má vyspělou, rozsáhlou sadu nástrojů pro ochranu a obnovu vašich podnikových dat. Používání softwaru, jako jsou Oracle Data Guard a Oracle RMAN, stejně jako provádění pravidelných kontrol korupce, vám pomůže čelit problému poškození datových bloků.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.