Olá,
Durante a criação de um índice ONLINE em um banco de dados Oracle, ocorreu um problema de conectividade fazendo com que o Oracle emitisse o erro ORA-08104 ao retomar a atividade de rebuild do índice. Não era possível dropar ou recriar o índice.
SQL> create index idx_emp_name on emp (emp_name) tablespace indx_tbs_01 online;
ORA-03113: end-of-file on communication channel
SQL> create index idx_emp_name on emp (emp_name) tablespace indx_tbs_01 online;
alter index idx_emp_name rebuild online
*
ERRO na linha 1:
ORA-08104: este objeto de índice 248352 está sendo construído ou reconstruído on-line
SQL> alter index idx_emp_name rebuild online;
alter index idx_emp_name rebuild online
*
ERRO na linha 1:
ORA-08104: este objeto de índice 248352 está sendo construído ou reconstruído on-line
Para resolver o problema, utilizei a procedure DBMS_REPAIR.ONLINE_INDEX_CLEAN encontrada no site psoug.org conforme demonstrado abaixo.
Segue abaixo a execução da procedure.
SQL> set timing on
SQL> DECLARE
2 isClean BOOLEAN;
3 BEGIN
4 isClean := FALSE;
5 WHILE isClean=FALSE
6 LOOP
7 isClean := dbms_repair.online_index_clean(
8 dbms_repair.all_index_id, dbms_repair.lock_wait);
9 dbms_lock.sleep(10);
10 END LOOP;
11 END;
12 /
Procedimento PL/SQL concluído com sucesso.
Decorrido: 00:01:00.01
sql> create index idx_emp_name on emp (emp_name) tablespace indx_tbs_01 online;
Índice criado.
Decorrido: 00:00:03.08
No mais, este procedimento também está disponível no documento Session Was Killed During The Rebuild Of Index ORA-08104 [ID 375856.1] no My Oracle Support (Metalink).
Um comentário:
Bom trabalho, parabéns!
Postar um comentário