Encontrei muitos artigos neste site e no blog de Tom Kyte sobre como, porquês e quandos da reconstrução de índices . Observe que esta questão é sobre se posso reconstruir quando houver sessões simultâneas referenciando esses índices; e há alguma recomendação para o mesmo?
Tenho algumas SELECT
consultas em execução em um banco de dados OLAP em várias tabelas. Devo interromper essas sessões antes da reconstrução? Estou assumindo que pode haver problemas com bloqueios.
ATUALIZAÇÃO: Observe que nossos DBAs aconselharam não ter sessões ativas durante a reconstrução. Além disso, o tamanho das tabelas está na faixa de 15 a 20 GB e as reconstruções geralmente podem levar de 2 a 3 horas.
A operação de reconstrução do índice é DDL e, portanto, pode bloquear a tabela subjacente, impedindo que você a atualize. No entanto, as consultas por natureza não são bloqueadas (a menos que
FOR UPDATE
uma cláusula seja especificada) e podem ser lidas de objetos mesmo se estiverem bloqueadas, portanto, geralmente, nenhum problema surgirá durante a reconstrução do índice enquanto as consultas estiverem em execução (talvez exceto por alguma degradação de desempenho durante a reconstrução ).Se você deseja atualizar a tabela com o índice que está sendo reconstruído, pode especificar a
ONLINE
cláusula:Caso contrário, a sessão que executa DML aguardará até que o índice seja reconstruído.
Para obter mais informações sobre reconstrução de índice,
ONLINE
cláusula e restrições de reconstrução de índice, leia a seção "Reconstruindo um índice existente" no Guia do Administrador e a seção "ALTER INDEX" no SQL Language Reference.