01 octubre 2009

Identificación de Objetos Inválidos en Oracle 9i

Este script nos permite identificar los objetos invalidos en la base de datos, y nos genera un script sql para recompilar lo que sea necesario.

Espero que les sea de utilidad.



select 'alter ' || decode(object_type, 'PACKAGE BODY', 'PACKAGE', object_type)
|| ' ' || owner || '.' || object_name || ' compile'
|| decode(object_type, 'PACKAGE BODY', ' body;', ';') objetos
from dba_objects
where status='INVALID'
order by owner,
decode(object_type, 'PACKAGE BODY', 'AAA', 'PACKAGE', 'AAB',
substr(object_type, 1, 3)) desc,
object_name;

En 10g es un poco más sencillo recompilar todo, ya que dentro de la carpeta de instalación de la base de datos (ORACLE_HOME) hay una carpeta "rdbms/admin" en donde hay un "utlrp.sql"

personalmente en el servidor me meto al sql plus y lo ejecuto.

sqlplus "/as sysdba"
SQL> @?/rdbms/admin/utlrp

Esto les recompilará todo lo que esté inválido y mostrará un status. Lo malo de esto es que no es posible identificar los objetos en cuestión para ver por que no compilan.

El script que puse en un principio, también funciona para 10g.

mucha suerte.

4 comentarios:

Anónimo dijo...

Tenha um dia DYNAMITE meu amigo!

Anónimo dijo...

Este fue siempre bastante que hay un montón de ahí a la espera de la derecha.

Anónimo dijo...

lo que yo queria, gracias

Anónimo dijo...

De manera muy eficiente la información escrita . Es probable que sea valiosa para cualquier persona que lo usess , incluido yo mismo . Mantener el gran trabajo - por cierto voy a echar un vistazo a más puestos de trabajo.