ORA-04063
Em Oracle, você pode geralmente criar um objeto mesmo que haja um erro de compilação dentro do procedimento ou pacote. Com tal recurso, um usuário pode implantar um esquema sem corrigir cada problema com objetos inválidos. Infelizmente, este não é o caso das views. Se houver um erro de compilação em um procedimento, função ou pacote dentro da view, ele não será criado, e você será executado no ORA-04063.
O problema
Error ORA-04063 ocorre porque ou uma tentativa de executar um procedimento armazenado foi feita ou uma tentativa de usar uma view que tem erros.
Para procedimentos armazenados, o problema pode ser um problema de sintaxe ou referências a outros procedimentos que não existem.
Para views, um possível problema pode ser uma referência na consulta definidora da view para uma tabela inexistente. Esta também pode ser uma tabela que tenha referências a tipos inexistentes ou inacessíveis. Esta informação é revelada quando a mensagem é expandida no utilitário oerr:
ORA-04063: tabela/visualização tem erros
Causa: Tentativa de executar um procedimento armazenado ou usar uma visualização que tenha erros. Para procedimentos armazenados, o problema pode ser erros de sintaxe ou referências a outros procedimentos inexistentes. Para vistas, o problema pode ser uma referência na consulta definidora da vista a uma tabela inexistente. Também pode ser uma tabela que tenha referências a tipos inexistentes ou inacessíveis.
Action: Corrigir os erros e/ou criar objetos referenciados conforme necessário.
A Solução
Para resolver o ORA-04063, executar a consulta PL/SQL por si só em SQL*Plus. Após executar a consulta, use o comando SQL*Plus “show error” para visualizar o motivo do erro e a localização (por linha) do erro. A sintaxe para este comando é:
SQL > mostrar erros
Para ver o feedback do comando “mostrar erros”, junte dba_errors e dba_service para ver o feedback dentro das linhas do código fonte PL/SQL.
Você pode escolher usar o comando CREATE FORCE VIEW, que irá criar a visualização mas marcá-la como inválida. Certifique-se de recriar a view após executar este comando.
No exemplo a seguir, o corpo do pacote PLOG no esquema LM_EMPLOY ou não existe ou tem um erro de compilação:
ORA-04063: corpo do pacote “LM_EMPLOY”.PLOG” tem erros
Neste caso, para resolver o erro, conecte-se à base de dados como usuário LM_EMPLOY e execute o seguinte comando:
SQL > alter package body plog compile;
Então use o comando “show error” (SQL > show errors) para ver quais erros precisam ser corrigidos.
Looking Forward
Embora seja difícil evitar proactivamente ver o ORA-04063, é sempre boa prática verificar duas vezes a sintaxe de todos os seus comandos. Verifique se as dependências estão corretas e se todas as variáveis sendo referenciadas existem.
Se você continuar a enfrentar problemas com o ORA-04063, você pode considerar contatar o administrador da sua base de dados para assistência se você não for o DBA do sistema. Outra solução pode ser contactar um profissional Oracle para resolver o problema. Lembre-se sempre de verificar as credenciais e certificação dos consultores Oracle para garantir que eles tenham a experiência e conhecimentos relevantes para ajudá-lo a satisfazer as necessidades da sua base de dados.