muitas LEMs em uma determinada tabela deste BD, e por causa delas, o "export" que normalmente demorava 1 hora para finalizar, estava demorando muito muito mais e comecou a falhar porque nao conseguia finalizar dentro do horario janela de 2 horas atribuido aquele processo. Depois de eliminar as LEMs (reinserindo as devidas linhas) tudo voltou ao normal! Seguem abaixo algumas perguntas e respostas que nos ajudarao a entender melhor este assunto: Como identificar os "buracos de uma tabela? Existem diversas formas de identificar blocos vazios no segmento de uma tabela. Seguem abaixo algumas que eu indico pela simplicidade de uso ou eficiencia:a) ANALYZE TABLE: Execute o comando "ANALYZE TABLE nome_tabela COMPUTE STATISTICS" e depois consulte na visao DBA_TABLES o valor da coluna EMPTY_BLOCKS. Se for maior que zero, existem blocos vazios dentro do segmento da tabela. Este e um metodo simples, porem ainda assim, eficiente. Exemplo: ANALYZE TABLE ECOMMERCE.PEDIDO COMPUTE STATISTICS; select blocks "Blocos Usados", empty_blocks "Blocos vazios", num_rows "Total de Linhas" from dba_tables where owner = 'ECOMMERCE' AND table_name='PEDIDO';b) Procedure DBMS_SPACE.SPACE_USAGE: O pacote DBMS_SPACE possui diversos procedures para avaliar o espaco dentro dos segmentos. Recomendo o uso do procedure SPACE_USAGE dentro dele. Ele fornece mais informacoes sobre o uso dos blocos de um segmento do que o ANALYZE TABLE. As principais informacoes sao: total de blocos cheios, total de blocos nao-usados e que nunca foram formatados para uso, e total de blocos com espaco livre entre diversas faixas percentuais (de 0 a 25%, de 25 a 50%, de 50 a 75% livres e acima de 75%). Segue abaixo um bloco PL/SQL de exemplo para executar o procedure DBMS_SPACE.SPACE_USAGE e ver os seus resultados:set serveroutput ondeclare v_unformatted_blocks number; v_unformatted_bytes number; v_fs1_blocks number; v_fs1_bytes number; v_fs2_blocks number; v_fs2_bytes number; v_fs3_blocks number; v_fs3_bytes number; v_fs4_blocks number; v_fs4_bytes number; v_full_blocks number; v_full_bytes number;begin dbms_space.space_usage ('<schema>', '<table name>', 'TABLE', v_unformatted_blocks, v_unformatted_bytes, v_fs1_blocks, v_fs1_bytes, v_fs2_blocks, v_fs2_bytes, v_fs3_blocks, v_fs3_bytes, v_fs4_blocks, v_fs4_bytes, v_full_blocks, v_full_bytes); dbms_output.put_line('Unformatted Blocks = '||v_unformatted_blocks); dbms_output.put_line('FS1 Blocks = '||v_fs1_blocks); dbms_output.put_line('FS2 Blocks = '||v_fs2_blocks); dbms_output.put_line('FS3 Blocks = '||v_fs3_blocks); dbms_output.put_line('FS4 Blocks = '||v_fs4_blocks); dbms_output.put_line('Full Blocks = '||v_full_blocks);end;/ Como eliminar os "buracos de uma tabela? Se voce ja sabe que a tabela esta cheia de buracos e preve que tao cedo eles nao serao preenchidos novamente por insercoes convencionais, acho entao que vale a pena executar algo para elimina-los. Entre os diversos procedimentos disponiveis para realizar essa tarefa de manutencao, citarei os metodos mais antigos, tais como: CTAS, ALTER TABLE MOVE, EXPORT/TRUNCATE/IMPORT; e os mais modernos, que indico atualmente, tais como: SHRINK e DBMS_REDEFINITION. Indico primeiramente o SHRINK porque entre todos os metodos disponiveis ele e o que causa menor impacto no ambiente de producao, permitindo executar a rotina de manutencao com o BD online e impacto quase zero nos DMLs que estiverem ocorrendo durante a sua execucao. Ele nao e o metodo mais eficaz (que elimina 100% dos buracos), mas funciona muito bem e recomendo usa-lo sempre que possivel. Ele possui algumas restricoes de uso, portanto, nem sempre voce conseguira utiliza-lo. Para aprender mais sobre o SHRINK recomendo a leitura do artigo "Compactando tabelas com o SHRINK em