Problema ao Recompilar Package após atualizar Banco de Dados
Olá Pessoal
Hoje estarei compartilhando um Problema (Erro) que me fez perder um bom tempo para resolver.
Tudo isso devido o Programa PL/SQL Developer não conseguir recompilar todas as Packages com sucesso.
Recompilei Package por Package e Trigger por Trigger e nada com PL/SQL Developer.
Com isso resolvi mudar a forma de recompilar utilizando a Procedure compile_schema da Package DBMS_UTILITY com SQLPLUS.
ERRO SOLICITADO:
Erro após atualizar um Package ou Trigger no Banco de Dados.
ORA-04061: Existing state of string has been invalidated.
ORA-04061: Estado existente de package (USER.REPLIC) foi invalidado.
ORA-06508: PL/SQL: não foi localizada a unidade de programa que está sendo chamada: (USER.REPLIC).
ORA-04088: Erro durante a execução do gatilho (USER.T_COM_FECHAMENTO_IMPORTACAO).
CAUSA:
Tentativa de reiniciar a execução de um Package usando existente estado que tem tornado inválido ou inconsistente com o Package, porque o Package tem sido alterado ou dropado.
Programa PL/SQL Developer recompila todos os objetos, consta a Package como compilada com sucesso, mas quando roda a aplicação da Erro na Package.
SOLUÇÃO:
Tentar novamente recompilar todos os Pacotes; este erro deveria ser causado a situação atual de todos os pacotes para ser re-inicializado. Executar DBMS_UTILITY.compile_schema.
A Procedure COMPILE_SCHEMA na Package DBMS_UTILITY compila todas as Procedures, Functions, Packages, e Triggers em um Schema específico.
Conectar como SYS ou SYSTEM no SQLPLUS e executar o seguinte comando setando o Schema:
SQL>exec dbms_utility.compile_schema(schema=>'nomeschema');
Procedimento PL/SQL concluído com sucesso.
Pronto, objetos recompilados com sucesso.
Abraço