Bozuk UNDO tablo alanının düzeltilmesi.
Oracle UNDO tablo alanı bozulmuş ise aşağıdaki gibi hata almak mümkün olabilmektedir.
ORA-00376: file string cannot be read at this time
UNDO segmentler bozulduğunda özetle aşağıdakiler yapılmalıdır :
- AUTO olan undo_management parametresi MANUAL yapılmalı.
- Yeni bir UNDO tablo alanı oluşturulmalı.
- Sorunlu UNDO tablo alanı kaldırılmalı.
- MANUAL olan undo_management parametresi AUTO yapılmalı ve undo_tablespace parametresi yeni oluşturulan UNDO tablo aalnı olacak şekilde değiştirilmelidir.
Bozuk UNDO tablo alanının düzeltilmesi :
1- Bozuk segmentleri tespit edin. Bozuk segmentleri tespit etmek için aşağıdaki sorgu kullanılabilir.
select segment_name, status from dba_rollback_segs where tablespace_name='<sorunlu undo tablo alanı>' and status = ‘NEEDS RECOVERY’; SEGMENT_NAME STATUS ------------------------------ ---------------- _SYSSMU22$ NEEDS RECOVERY
2- Veri tabanını kapatın.
3- İlgili pfile’ı undo_management MANUAL olacak şekilde ve gizli parametrelerden _offline_rollback_segments değerini sorunlu segmentler olacak şekilde değiştirin. MOUNT modda ve RESTRICT olacak şekilde veri tabanını açın.
Pfile dosyasına eklenecek satırlar:
UNDO_MANAGEMENT=MANUAL
# Bozuk segment tek ise :
_OFFLINE_ROLLBACK_SEGMENTS=_SYSSMU22$
# Bozuk segment birden fazla ise :
_OFFLINE_ROLLBACK_SEGMENTS=(‘_SYSSMU22$’,‘_SYSSMU23$’, ‘_SYSSMU24$’)
SQL > STARTUP RESTRICT MOUNT pfile=<ORACLE_HOME>/dbs/initORCL.ora
4- Tüm bozuk segmentleri ve undo tablo alanını kaldırın.
SQL> drop rollback segment "_SYSSMU22$";
Rollback segment dropped.
SQL > drop tablespace undotbs including contents and datafiles;
Tablespace dropped.
5- Yeni undo tablo alanı oluşturun.
SQL > CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE ’/oradata/orcl/UNDOTBS01.DBF’ SIZE 100M ;
6- Veri tabanını kapatın.
SOL> shutdown immediate
7- Pfile daki eklenen satırlardan _OFFLINE_ROLLBACK_SEGMENTS satırını silin, UNDO_MANAGEMENT=AUTO yapın, eğer yeni oluşturulan undo tablo alanının ismi silinenden farklı ise undo_tablespace=<YENI_UNDOTBS1> olacak şekilde değiştirin.
8- Veri tabanını normal şekilde pfile dan açın.
SQL > STARTUP pfile=<ORACLE_HOME>/dbs/initORCL.ora
Spfile kullanmanız gerekiyor ise açıldıktan sonra;
SQL > create spfile from pfile ;
Komutu ile spfile oluşturabilirsiniz.