2011. szeptember 20., kedd

Oracle undo tablespace probléma

Egy megoldás arra, ha fizikailag sérült, vagy hiányzik az undo tablespace-hez tartozó datafile Oracle adatbázisnál:
1. új undo tablespace létrehozása (legyen mondjuk undotbs2)
2. állítsuk be ezt az aktuális undo tablespace-nek: alter system set undo_tablesapce = undotbs2;
3. tegyük offline-ná az eredeti undo tablespace-t: alter tablespace undotbs1 offline;
4. drop-oljuk a régi undo tablespace-t.

Ha az utolsó lépés is hiba nélkül lefut, akkor rendben vagyunk. Az én esetemben viszont volt egy aktív rollback segment az eredeti undo tablespace-ben, emiatt Oracle nem hagyta, hogy drop-oljam a régi undo tablespacet, undotbs1-et ( ora-00376 ill ora-01110). Mint kiderült, ha a dba_rollback_segs status mezője "NEEDS RECOVERY" valamelyik rollback segment-nél, akkor az megakadályozza, hogy töröljük a hozzá tartozó undo tablespacet.

Erre a problémára megoldást a következő blogon találtam:

A lényeg az, hogy az init.ora file-t paraméterezzük úgy, hogy újraindításkor az adatbázis automatikusan offline-ra állítson minden olyan rollback segment-et, amelyek a régi undo tablespace-hez tartoznak. Ez a megoldás NEM Oracle ajánlás, mindenképp kell előtte teljes adatbázis mentést csinálni, a használt paraméter nem dokumentált (_offline_rollback_segments). De nálam működött, tehát az adatbázis újrahúzása előtt azért érdemes megpróbálni.

Nincsenek megjegyzések:

Megjegyzés küldése