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
+1 oy
26 gösterim
Oracle veritabanında invalid object'lerin her birine tek tek compile demek toplu olarak nasıl compile edebilirim?
Veri Tabanı kategorisinde (567 puan) sordu

1 cevap

+1 oy

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;
(207 puan) cevapladı
tüm db objelerini derleyebiliyor muyuz (compile) yani bu script ile?
Aynen. select'den dönen tüm objeleri compile etmek için tetikliyor.

İlgili sorular

0 oy
1 cevap 17 gösterim
0 oy
2 cevap 62 gösterim
0 oy
1 cevap 30 gösterim
0 oy
1 cevap 19 gösterim
19 gösterim 25 Nisan 2017 Veri Tabanı kategorisinde tolga (1.6k puan) sordu
...