Solay 0 Denunciar post Postado Abril 23, 2007 Olá PessoalPercebi que a importação com o slqldr fica muito mais rápida se eu desativar os índices, mas para fazer esse teste eu os desativei na mão, agora quero criar uma rotina para fazer isso.Estou pensando em fazer assim: desativar os índices utilizando o comando ALTER INDEX nome_do_indice UNUSABLE e rodar o sqlldr, depois ativar utilizando o comando ALTER INDEX nome_do_indice REBUILD. Obs: só quero desativar os índices que não são chave primária.Minha duvida é se uma rotina dessas é viável para o banco ou se irá sobrecarregá-lo muito, pois a importação pelo sqlldr será executada várias vezes ao dia? Obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
alphamek 2 Denunciar post Postado Abril 24, 2007 Seguinte, Qualquer tipo de carga, seja por SQLLOADER ou PL/SQL (INSERTs), desabilitar os índices SEMPRE será mais rápido pelo simples motivo de não ter que realizar muitas operações DML sobre o objeto (TABELA). Para desabilitar os índices, tu poderá somente desabilitar os índices que a tabela utiliza, fazendo o SELECT abaixo: SELECT 'ALTER INDEX ' || a.owner || '.' || a.index_name || ' DISABLE;' FROM dba_indexes WHERE owner = 'dono_tabela' and table_name = 'NOME_TABELA'; Se a tabela for particionada, terá que procurar na DBA_IND_PARTITIONS No momento da habilitação, acho melhor MESMO realizar um REBUILD para reconstruir o índice, já que terá novos dados na tabela e o velho índice poderá ficar inutilizavel. Abraços, Compartilhar este post Link para o post Compartilhar em outros sites