Página 1 de 1

[Dica] Objetos Inválidos no Banco

Enviado: Qui, 01 Dez 2005 2:19 pm
por anderson
a query abaixo mostra os objetos inválidos no banco...

Selecionar tudo

SELECT DISTINCT u.object_name,
       decode(u.object_type,'PACKAGE BODY','PACKAGE',u.object_type) object_type,
       u.created
  FROM user_objects u
 WHERE u.status = 'INVALID'
   AND u.object_type IN ('PROCEDURE','FUNCTION','PACKAGE BODY','PACKAGE')
 ORDER BY u.created
e esta próxima compila os objetos inválidos....

Selecionar tudo

DECLARE
  CURSOR c_obj IS
    SELECT DISTINCT u.object_name,
           decode(u.object_type,'PACKAGE BODY','PACKAGE',u.object_type) object_type,
				   u.created
      FROM user_objects u
     WHERE u.status = 'INVALID'
		   AND u.object_type IN ('PROCEDURE','FUNCTION','PACKAGE BODY','PACKAGE')
     ORDER BY u.created;
  r_obj NUMBER;
BEGIN
  FOR r_obj IN c_obj LOOP
		BEGIN
      EXECUTE IMMEDIATE 'alter '||r_obj.object_type||' '||r_obj.object_name||' compile';
      dbms_output.put_line(r_obj.object_type||' '||r_obj.object_name||': COMPILADO!' );
		EXCEPTION
		  WHEN OTHERS THEN
        dbms_output.put_line('Erro Compilando '||r_obj.object_type||' '||r_obj.object_name);
	  END;
	END LOOP;
END;
[]´s

:wink:

Enviado: Sex, 02 Dez 2005 8:16 am
por dr_gori
Outra forma de fazer isso (acho que a partir da versão 9i) é usar a DBMS_UTILITY.

Veja um exemplo:

Selecionar tudo

exec dbms_utility.compile_schema('SCOTT');
Abaixo, está a sintaxe:

Selecionar tudo

dbms_utility.compile_schema(
schema         IN VARCHAR2,
compile_all    BOOLEAN DEFAULT TRUE,
reuse_settings BOOLEAN DEFAULT FALSE);
:-o

dbms_utility.compile_schema

Enviado: Qui, 06 Jul 2006 10:30 am
por mello
daria para usar o dbms_utility.compile_schema por dblink ??