Drop tablespace işlemindeki ORA-02429: cannot drop index used for enforcement of unique/primary key hatası

Oracle veritabanlarında bir tablo alanında daha önceden oluşturulan bir tabloya ait constrain’ler olduğunda tablo alanın silinmesine izin verilmemektedir. Tablo alanı boş olduğunda bile Constrains’ler etkin olduğunda tablo alanı drop işleminde ORA-02429 hatası alınacaktır. Sorunun çözümü için ilgili Constrain’leri pasif duruma getirmek gerekmektdir.

Alınan hata aşağıdaki gibi olacaktır.

SQL> DROP TABLESPACE DATA_TS INCLUDING CONTENTS AND DATAFILES;
DROP TABLESPACE DATA_TS INCLUDING CONTENTS AND DATAFILES
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot drop index used for enforcement of unique/primary key

 

Hatanıın çözümü için drop işlemi yapılan tablo alanlarında oluşturulmuş constrain’leri DISABLE duruma getirmek gerekmektedir. Aşağıdaki sorgu ile gerekli komutları oluşturabilir, sonrasında oluşan komutları çalıştırıp , ilgili constrain’leri disable yapabilirsiniz.

SQL> set lines 1000
SQL> select 'ALTER TABLE '||owner||'.'||table_name||' DISABLE CONSTRAINT '|| constraint_name||';' from dba_constraints where (index_owner,index_name) in (select owner,index_name from dba_indexes where tablespace_name='DATA_TS')

'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DISABLECONSTRAINT'||CONSTRAINT_NAME||';'
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ALTER TABLE ADURUOZ.TABLE1 DISABLE CONSTRAINT KOD_UNQ;
ALTER TABLE ADURUOZ.TABLE2 DISABLE CONSTRAINT PK_ID;

 

Constrain’ler disable duruma geldikten sonra ilgili tablo alanı sorunsuz şekilde drop edilebilecektir.

 

SQL> DROP TABLESPACE DATA_TS INCLUDING CONTENTS AND DATAFILES;
Tablespace dropped.

 

 

Bir cevap yazın

Your email address will not be published. Required fields are marked *.

*
*

Lütfen captcha kodunu giriniz *

Lütfen Resimdeki Kodu Boşluğa Giriniz.
You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>