sexta-feira, 23 de junho de 2017

ORA-04063: view "SYS.DBA_REGISTRY" has errors



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