Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


segunda-feira, 21 de agosto de 2017

Resolvendo o erro ORA-08104 com a procedure DBMS_REPAIR.ONLINE_INDEX_CLEAN ao criar um índice ONLINE

Por Eduardo Legatti

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:

Bruno disse...

Bom trabalho, parabéns!

Postagens populares