Bruno, Crie índices manualmente nas chaves estrangeiras que referenciam essa tabela grande que você esta manipulando.
O que acontece é o seguitne, quando você manipula a tabela o Oracle irá verificar se existe alguma tabela "filho" que depende dessa tabela alterada (isso ocorre a partir da existência de FKs), uma vez que índices não existam nas FKs (por padrão só são criados índices nas PKs) o Oracle mantem um lock na tabela "filho", se você criar os índices os locks se restringirão as linhas das tabelas "filho" que tiveram sua referência sendo manipulada. Atenciosamente, Caio Spadafora, Database Administrator, http://0011brothers.blogspot.com/ ________________________________ De: Bruno Lorenzini <[email protected]> Para: Oracle BR <[email protected]> Enviadas: Quarta-feira, 20 de Janeiro de 2010 12:48:43 Assunto: [oracle_br] Lock estranho Bom dia pessoal, Estou com uma dúvida. Hoje tenho um processo que faz a carga de uma tabela gigantesca. Tentei carregar esses dados e o processo ficou extremamente lento. Eu apenas desabilito triggers de tabela destino, e uso um bulk-insert.. Detectei que no momento do insert ocorriam locks de outras tabelas que não estavam sendo carregadas. Percebi que as tabelas que deram locks eram tabelas que possuíam FK para essa tabela ou a tabela possui FK pra essas tabelas (todas estavam inter-relacionadas) . Decidi então desligar as FK’s e rodar em modo de debug até o momento do lock. Não ocorreu. Isso é possível? Alguém sabe explicar porque o Oracle fez isso? Porque isso atrapalhou a performance do meu processo? Obrigado pela ajuda pessoal. Bruno Lorenzini [As partes desta mensagem que não continham texto foram removidas] ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados..yahoo.com [As partes desta mensagem que não continham texto foram removidas]
