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
Birbirinden değerli Türkçe Blog yazarlarını takip edebilmek için ziyaret edebileceğiniz bir internet sitesi. yazarlar.hasscript.com
0 oy
34 gösterim
Veri tabanında tüm constraint ve triggerlar invalide düştü. Tüm bunları nasıl kolayca enable yapabilirim?
Veri Tabanı kategorisinde (1.8k puan)
düzenledi

1 cevap

+2 oy

Invalid ayrı birşeydir, disable ayrı birşeydir;  valid ayrıdır, enable ayrıdır.  

Eğer siz disable olan contraint'lerinizi ve trigger'larını enable etmek istiyorsanız aşağıdaki komutu kullanabilirsiniz. 

alter trigger TRIGER_ADI  enable;

alter table  TABLO_ADI enable constraint CONSTRAINT_ADI;

aşağıdaki sql ile de tüm invalid objelerinizi derleyebilirsiniz.  hata yoksa valid duruma geçer. 

SET SERVEROUTPUT ON SIZE 1000000

BEGIN


   FOR cur_rec

      IN (  SELECT 'ALTER ' || REPLACE (OBJECT_TYPE, 'PACKAGE BODY', 'PACKAGE') || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE' sqlsmt

              FROM dba_objects

             WHERE STATUS = 'INVALID' AND object_type NOT IN ('SYNONYM') AND owner NOT LIKE 'TC%'

          ORDER BY owner)

   LOOP

      BEGIN

         EXECUTE IMMEDIATE cur_rec.sqlsmt;

      EXCEPTION

         WHEN OTHERS

         THEN

         DBMS_OUTPUT.put_line ('Error on SQL: ' || cur_rec.sqlsmt || SUBSTR (SQLERRM, 1, 120));

         CONTINUE;

      END;

   END LOOP;

END;

/
(612 puan)

İlgili sorular

+1 oy
1 cevap 43 gösterim
0 oy
1 cevap 30 gösterim
0 oy
1 cevap 42 gösterim
0 oy
1 cevap 44 gösterim
...