Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

1
Oracle veritabanında tüm invalid object'leri nasıl compile ederim?

Açık 1 Cevaplar 18 Gösterim Veri Tabanı
Oracle veritabanında invalid object'lerin her birine tek tek compile demek toplu olarak nasıl compile edebilirim?

1 cevap

1

Bir script ile halledebilirsin ( Object Type'a istediğin type ları eklemeyi unutmayın ); 

BEGIN
  FOR cur_rec IN (SELECT owner,
                         object_name,
                         object_type,
                         DECODE(object_type, 'PACKAGE', 1,
                                             'PACKAGE BODY', 2, 2) AS recompile_order
                  FROM   dba_objects
                  WHERE  object_type IN ('PACKAGE', 'PACKAGE BODY')
                  AND    status != 'VALID'
                  ORDER BY 4)
  LOOP
    BEGIN
      IF cur_rec.object_type = 'PACKAGE' THEN
        EXECUTE IMMEDIATE 'ALTER ' || cur_rec.object_type || 
            ' "' || cur_rec.owner || '"."' || cur_rec.object_name || '" COMPILE';
      ElSE
        EXECUTE IMMEDIATE 'ALTER PACKAGE "' || cur_rec.owner || 
            '"."' || cur_rec.object_name || '" COMPILE BODY';
      END IF;
    EXCEPTION
      WHEN OTHERS THEN
        DBMS_OUTPUT.put_line(cur_rec.object_type || ' : ' || cur_rec.owner || 
                             ' : ' || cur_rec.object_name);
    END;
  END LOOP;
END;
10 Ocak erkanerkisi (187 puan) cevapladı
2Yorumlar
14 Ocak tolga (1,619 puan) yorumladı
tüm db objelerini derleyebiliyor muyuz (compile) yani bu script ile?
14 Ocak erkanerkisi (187 puan) yorumladı
Aynen. select'den dönen tüm objeleri compile etmek için tetikliyor.
...