oracle rman bmr block media recovery - ghdrako/doc_snipets GitHub Wiki

Block Media Recovery (BMR)

Alternatywą dla przywracania i odzyskiwania całych plików danych lub obszarów tabel jest Block Media Recovery. Ta metoda jest odpowiednia, jeśli pliki danych są nadal fizycznie obecne, a możliwa do opanowania liczba bloków danych jest uszkodzona. Zaletą tej metody jest to, że pliki danych, których dotyczy problem, pozostają w stanie ONLINE podczas procesu odzyskiwania, a zatem są nadal dostępne dla użytkowników bazy danych. Tylko wtedy, gdy żądany jest uszkodzony blok, klient otrzymuje komunikat o błędzie

Funkcja Block Media Recovery (BMR) została wprowadzona w Oracle 9i. Stosuje się go w przypadku, gdy pewna liczba bloków danych jest nieużyteczna. Zaletą tej metody jest to, że nie ma potrzeby wyłączania przestrzeni tabel ani plików. Użytkownicy baz danych mogą kontynuować pracę bez ograniczeń, pod warunkiem, że nie zażądają żadnego z wadliwych bloków. W międzyczasie możliwe będzie przywrócenie uszkodzonych bloków.

Podczas odczytu uszkodzonego bloku klient otrzymuje następujący komunikat o błędzie:

ORA-00604: error occurred at recursive SQL level 2
ORA-01578: ORACLE data block corrupted (file # 1, block # 69914)
ORA-01110: data file 1: '/opt/oracle/oradata/MITP/system01.dbf'

Jeżeli znany jest numer pliku i bloku, Recovery Manager wykonuje odzyskiwanie bloku za pomocą następującego polecenia:

RMAN> BLOCKRECOVER DATAFILE 1 BLOCK 69914 FROM BACKUPSET;

Uszkodzone bloki danych są zgłaszane w następujących plikach lub operacjach:

  • view V$DATABASE_BLOCK_CORRUPTION
  • DBVERIFY-Tools
  • plik alertu
  • podczas backup RMAN
  • Komunikat o błędzie w kliencie SQL Aby odzyskać wszystkie uszkodzone bloki wymienione w widoku V$DATABASE_BLOCK_CORRUPTION‌, możesz użyć następującego polecenia:
 RMAN> RECOVER CORRUPTION LIST; 

Następnie naprawione bloki zostaną usunięte z listy.

Example Recovering All Block Corruption in the Database

Typically, block corruption is reported in the following locations:

  • Results of the LIST FAILURE, VALIDATE, or BACKUP ... VALIDATE command
  • The V$DATABASE_BLOCK_CORRUPTION view
  • Error messages in standard output
  • The alert log
  • User trace files
  • Results of the SQL commands ANALYZE TABLE and ANALYZE INDEX
  • Results of the DBVERIFY utility
  • Third-party media management output
SELECT NAME, VALUE FROM V$DIAG_INFO;

This example runs a backup validation to populate the V$DATABASE_BLOCK_CORRUPTION view, then recovers any corrupt blocks recorded in the view. Sample output is included for both commands.

  • Recovering All Blocks in V$DATABASE_BLOCK_CORRUPTION
RMAN>SHOW All # confirm that the appropriate channels are preconfigured.
RMAN>VALIDATE DATABASE
RMAN>RECOVER CORRUPTION LIST;
  • using Data Recovery Advisor
LIST FAILURE;
ADVISE FAILURE;
REPAIR FAILURE; #
REPAIR FAILURE USING ADVISE OPTION 2; #  repair actions only for a particular failure if muliple

Or Recovering Individual Blocks Using the RECOVER...BLOCK Command

SELECT NAME, VALUE FROM  V$DIAG_INFO; -- locate trace files and the alert log to obtain the data file numbers and block numbers of the corrupted blocks.
RECOVER 
  DATAFILE 8 BLOCK 13 
  DATAFILE 2 BLOCK 19;

Restrict using backups

RECOVER 
  DATAFILE 8 BLOCK 13 
  DATAFILE 2 BLOCK 199
  FROM TAG mondayam;

You could use the FROM BACKUPSET option to restrict the type of backup that RMAN searches, or the EXCLUDE FLASHBACK LOG option to restrict RMAN from searching the flashback logs.

This example runs a backup validation to populate the V$DATABASE_BLOCK_CORRUPTION view, then recovers any corrupt blocks recorded in the view. Sample output is included for both commands.