Indeks rebuild işlemi sırasında alınan ORA-08104 hatasının çözümü
Online olarak bir indeksin rebuild işlemi sırasında , ilgili oturum beklenmedik şekilde kesildiğinde , ilgili indeks , data dictionary’de aslında rebuild olmamasına rağmen , rebuild işlemi yapılıyormuş gibi kalıyor. Bu sebepten dolayı yeniden ilgili indekisi rebuild yapılmaya çalışıldığında ORA-08104 hatasına sebep olmaktadır.
Rebuild işlemi aşağıdaki gibi hata ile sonlanmaktadır.
SQL> ALTER INDEX kullanici.index rebuild online; ALTER INDEX kullanici.index rebuild online * ERROR at line 1: ORA-08104: this index object 1234567 is being online built or rebuilt
Bu sorundan , dbms_repair.online_index_clean fonksiyonunu çalıştırarak kurtulabilirsiniz. Örnek kullanımı aşağıdaki gibidir. index_object_id yerine sorun yaşadığınız nesnenin id bilgisi gelecektir. Bu bilgiye dba_objects , user_indexes yada all_indexes gibi görüntülerden ulaşabilirsiniz. SYS ile bağlanıp çalıştırmanız gerekmektedir.
-bash-4.3$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Thu Jan 26 09:58:08 2017 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> Begin declare lv_ret BOOLEAN; begin lv_ret := dbms_repair.online_index_clean(index_object_id); end; end; /