Após uma cópia do banco de dados feita a partir de um outro banco na mesma versão, mas utilizando a cópia de discos, nos deparamos com uma quantidade grande de objetos inválidos.
Após várias verificações identificamos que alguns componentes de banco de dados estavam inválidos e na tentativa de corrigir, acabamos por danificar o catálogo, onde ao executarmos um select na dba_registry era exibido o erro abaixo:
SQL> Select * from dba_registry;
ORA-04063: view "SYS.DBA_REGISTRY" has errors
ao tentarmos ver a descrição da view dba_registry, recebíamos o seguinte erro:
SQL> desc dba_registry
ORA-24372: invalid object for describe
As causas mais prováveis para os componentes dba_registry tornarem-se inválidas, são:
- Aplicação de um patch;
- Instalação de um novo componente;
- Os scripts catalog.sql ou catproc.sql não foram executados com sucesso após a criação do banco de dados.
Qualquer uma das atividades acima pode ter falhado em algum momento ou qualquer um dos objetos dependentes ficaram inválidos.
Normalmente, a solução é executarmos os scripts catalog.sql e, em seguida, catproc.sql como sysdba conforme a nota do metalink indicada nas referências.
Esse problema também pode acontecer se você executar o catproc.sql primeiro e depois catalog.sql.
Abaixo segue a ordem correta de execução dos scripts.
$sqlplus "/as sysdba"
SQL> startup upgrade
SQL > @?/rdbms/admin/catalog.sql
SQL > @?/rdbms/admin/catproc.sql
SQL > @?/rdbms/admin/utlrp.sql
Referência:
Note: 457861.1 CATPROC - Packages and Types Invalid in Dba_registry