Cum se extrage datele din tabelul corupt Ora-01578 blocul de date oracle corupt (fișier, bloc

Evaluare: 0/5

În acest post, problema de a obține date și o masă coruptă a fost evitată ocolind blocul corupt. Aici luăm în considerare posibilitatea de a obține date de tabel direct dintr-un bloc corupt.







Această posibilitate devine reală dacă există un indice pentru toate coloanele din tabel. Mai precis, puteți prelua informații din segmentele indexate stocate în ele, chiar dacă blocurile de tabele corespunzătoare sunt corupte.

În post, sa arătat modul în care se găsește ROWID-ul primei intrări de masă din blocul deteriorat și ROWID-ul primei înregistrări din blocul următor blocului deteriorat:

selectați dbms_rowid.rowid_create (1, DATA_OBJECT_ID, numărul fișierului, numărul blocului, 0) first_rowid din dual - găsiți ROWID-ul primei înregistrări din blocul deteriorat







selectați dbms_rowid.rowid_create (1, DATA_OBJECT_ID, FileNumber, nomer_bloka + 1,0) last_rowid de dublă - ROWID găsi prima înregistrare în blocul în urma deteriorat.

Așa că am obținut o gamă de ROWID a înregistrărilor pierdute ale tabelelor. Și acum, dacă avem indici, vom executa astfel de cereri selectate, astfel încât executarea lor să nu fie necesară pentru citirea tabelului. Adică, pentru a le face, a fost suficient să citiți indicii. Următoarele interogări ar trebui să fie utilizate pentru fiecare index existent în tabel (ar fi bine dacă ar exista indicii pentru fiecare coloană a tabelului). Astfel, veți putea salva cât mai multe informații posibil.

Dacă cel puțin o cheie are o constrângere NOT NULL, puteți utiliza metoda rapidă de scanare completă pentru a accesa valorile indexului:

În caz contrar, nu veți putea utiliza scanarea rapidă completă, dar ar trebui să utilizați scanarea intervalului. Pentru a face acest lucru, trebuie să știți valoarea minimă pierdută a cheii index-cheie (prima coloană a indexului), care vă va oferi o scanare index







Trimiteți-le prietenilor: