1.AMAÇ VE KAPSAM
INDEX rebuild işlemi esnasında session kill veya instance’ın kapanması yaşanırsa, index üstünde tekrardan bir değişiklik yapmaya çalıştıgımızda veritabanı ORA-08104 hatası vericektir bunun çözümü için rdbms veya oradebug kullanmamız gerekmektedir.
2.UYGULAMA
2.1. Yukarda bahsedilen sorunu yaşadıktan sonra index üstünde herhangi bir değişiklik yapmaya çalıştığımızda aşağıdaki hatayı alırız.
ALTER INDEX USB.IDX_BILDIRIM_OKU * ERROR at line 1: ORA-08104: this index object 159048 is being online built or rebuilt
2.2. Normal şartlar altında bu sorunu SMON’un çözmesi gerekiyor ama bu bir bug oldugundan dolayı sleep moda düşmekte. Tekrardan aktif hale geçirebilmek için smon id’sini bulup oradebugla calıstırmamız gerekmekte.SMON’un bunu düzeltmesi diğer çözüm önerisine göre daha uzun sürmekte.
SQL> select pid from v$process p, v$bgprocess b where b.paddr = p.addr and name='SMON'; PID ---------- 23 SQL> oradebug wakeup 23; Statement processed.
2.3. Bu tarz sorunları çözmek için ben genellikle dbms_repair.online_index_clean paketini kullanıyorum.Çözüm için aşağıdaki scripti çalıştırmanız yeterlidir.
declare isClean boolean; begin isClean := FALSE; while isClean=FALSE loop isClean := dbms_repair.online_index_clean(dbms_repair.all_index_id, dbms_repair.lock_wait); dbms_lock.sleep(2); end loop; exception when others then RAISE; end; /
Leave a Reply