Pacotes se tornando inválidos durante execução

Oracle

08/11/2013

Olá a todos,

Pessoal, estou com um problema e pode ser que alguém aqui possa me dar uma dica.

Desenvolvo para Banco de Dados Oracle e possuo vários pacotes (PACKAGES) que se relacionam entre si para executar uma determinada tarefa. Um dos pacotes é o "centralizador" das operações, chamando funções de vários outros pacotes auxiliares.

Acontece que, durante as operações, faz-se necessário, através de uma das funções chamadas, que se desabilitem todas as FKs, índices, etc, de uma determinada Tabela que sofrerá uma operação de INSERT em massa, para melhorar a performance. O problema é exatamente após a execução da função que desabilita todas estas constraints.

Ao desabilitar as constraints, o próprio Pacote centralizador (e até outros auxiliares ao processo) tornam-se inválidos, ocasionando erro logo a seguir, erro típico de pacotes inválidos.

Tentei utilizar uma função, a dbms_utility.compile_schema( ) do próprio Oracle, após a chamada da função que desabilita as constraints, porém sem sucesso.

Parece que mesmo tentando revalidar os pacotes, por já estar em execução durante uma sessão Oracle, a função dbms_utility.compile_schema( ) não está tendo êxito e o problema persiste. Já tentei usar uma outra função, também criada por mim, que executa dbms_utility.validate( ) em TODOS os pacotes utilizados pelo meu processo, mas também não funcionou.

Tornei a função principal do pacote chamador em uma função autônoma, com a diretiva PRAGMA AUTONOMOUS_TRANSACTION, para ver se isso resolvia o problema, mas ainda não funcionou.

Bom, alguém já passou por isso ou tem alguma sugestão?

Abraço!
Marcelo Cunha

Marcelo Cunha

Curtidas 0
POSTAR