8 Mart 2012 Perşembe

[TR] Online index build-rebuild kill temizleme

Bir index yaratma yada rebuild etme işlemi istenerek yarıda kesilir veya başka bir oturum tarafından bu oturum kill edilirse, index gerçekte var olmadığı halde data dctionary'de kaydı kalır. Bu tutarsızlığı temizlemek için sırasıyla aşağıdaki prosedür uygulanır.

Bu prosedür SMON tarafından otomatik ve periyodik olarak düm db'yi kapasayacak şeklide zaten yapılır.

1. Index'in data dictionary'de olduğu teyid edilir.

select * from dba_indexes where owner = 'SEMA1' and index_name = 'INDEX1';

2. Index'in fiziksel olarak db'de bulunmadığı, drop etmeye çalışılarak test edilir.

drop index SEMA1.INDEX1;

drop index sema1.index1
          *
ERROR at line 1:
ORA-08104: this index object 66960 is being online built or rebuilt




3. Index'in fiziksel olarak db'de bulunmadığı, index yeniden yaratılmaya çalışılarak test edilir.

create index SEMA1.INDEX1 on SEMA1.TABLO1(KOLON1) online;

create index sema1.index1 on sema1.tablo1(kolon1) online
            *
ERROR at line 1:
ORA-00955: name is already used by an existing object

4. Data dictionary'deki index kaydı aşağıdaki şeklide silinir.

select object_id from dba_objects where owner = 'SEMA1' and object_name = 'INDEX1' and   object_type = 'INDEX';

declare
ret boolean;
begin
ret:=dbms_repair.ONLINE_INDEX_CLEAN(66960);
end;
/

5. Index gerçekten drop olmuş mu kontrol edilir.

select * from dba_indexes where table_owner = 'SEMA1' and table_name = 'TABLO1' and index_name = 'INDEX1';

Hiç yorum yok:

Yorum Gönder