dba:block_recover
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
dba:block_recover [2014/06/27 21:19] – gpipperr | dba:block_recover [2014/07/02 14:14] – [Was tun wenn kein Backup mehr exisiert?] gpipperr | ||
---|---|---|---|
Zeile 154: | Zeile 154: | ||
<note important> | <note important> | ||
- | === Was tun wenn kein Backup mehr exisiert? === | + | ==== Was tun wenn kein Backup mehr exisiert? |
+ | === Defekte Blöcke mit Event überspringen === | ||
+ | |||
+ | Diese ist mir allerdings in einer Umgebung mit einer echten physikalischen Block Korruption nicht gelungen. | ||
+ | |||
+ | Defekte Blöcke überspringen: | ||
+ | |||
+ | <code sql> | ||
+ | alter system set events=’10231 trace name context forever, | ||
+ | < | ||
+ | |||
+ | Neue Tabelle anlegen mit den Daten der defekten Tabelle: | ||
+ | |||
+ | <code sql> | ||
+ | create table new_table as select * from defect_table; | ||
+ | </ | ||
+ | |||
+ | **BESSER** | ||
+ | * DDL der alten Tabelle ermittelten mit zum Beispiel => [[http:// | ||
+ | * Abhängige Objekte wie Indexe der Tabelle löschen | ||
+ | * Alte Tabelle umbenennen | ||
+ | * Neue Tabelle mit dem DDL anlegen | ||
+ | * Daten in die neue Tabelle kopieren | ||
+ | |||
+ | |||
+ | Daten in der neuen Tabelle prüfen und die alte Tabelle löschen: | ||
+ | <code sql> | ||
+ | drop table defect_table; | ||
+ | rename new_tab to defect_table; | ||
+ | </ | ||
+ | |||
+ | Trace wieder abschalten: | ||
+ | <code sql> | ||
+ | alter system set events ’10231 trace name context off’; | ||
+ | </ | ||
+ | |||
+ | === Defekte Blöcke mit SQL überspringen === | ||
+ | |||
+ | Falls der Block nur einen Index betrifft, diesen einfach neu anlegen. | ||
+ | |||
+ | Nur die Blöcke lesen die **nicht** betroffen sind: | ||
+ | |||
+ | <code sql> | ||
+ | create table new_tab | ||
+ | | ||
+ | where rowid not in(select rowid | ||
+ | from defect_table where dbms_rowid.rowid_block_number(rowid)=: | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Sind mehr als ein Block betroffen mit v$database_block_corruption entsprechend joinen! Block Range beachten! | ||
+ | |||
+ | |||
+ | === DBMS_REPAIR === | ||
+ | |||
+ | DB Objeckt mit DBMS_REPAIR reparieren siehe => http:// | ||
- | DB Objeckt reparieren, falls kein Backup: siehe http:// | ||
dba/block_recover.txt · Zuletzt geändert: 2021/02/05 09:58 von gpipperr