Pacotes se tornando inválidos durante execução
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!
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
Curtidas 0